Eu estou escrevendo um código para uma atribuição que precisa ter essa saída:
A1 B2 C3 D4 E5 F6 G7 H8 I9 J10 K11 L12
Isso é o que escrevi usando loops aninhados para (a atribuição requer o uso de loops for):
public static void outputFive()
{
//Output 5
for(char alph = "A"; alph <= "L"; alph++)
{
for(int x = 1; x <= 12; x++)
{
System.out.print(alph + x + " ");
}
}
}
E a saída que recebo é de todos os números que não são nem o que eu quero O que eu recebo quando corro:
66 67 68 69 70 71 72 73 74 75 76 77 67 68 69 70 71 72 73 74 75 76 77 78 68 69 70 71 72 73 74 75 76 77 78 79 69 70 71 72 73 74 75 76 77 78 79 80 70 71 72 73 74 75 76 77 78 79 80 81 71 72 73 74 75 76 77 78 79 80 81 82 72 73 74 75 76 77 78 79 80 81 82 83 73 74 75 76 77 78 79 80 81 82 83 84 74 75 76 77 78 79 80 81 82 83 84 85 75 76 77 78 79 80 81 82 83 84 85 86 76 77 78 79 80 81 82 83 84 85 86 87 77 78 79 80 81 82 83 84 85 86 87 88
Respostas:
1 para resposta № 1Você pode usar um contador como este:
public static void main(String[] args) {
int i = 1;
for (char alph = "A"; alph <= "L"; alph++) {
System.out.print(alph + "" + i + " ");
i++;
}
}
Isso vai te mostrar:
A1 B2 C3 D4 E5 F6 G7 H8 I9 J10 K11 L12
Porque se você tentar adicionar um char a um int assim:
System.out.println("A" + 1);
na verdade isso significa que o 65 + 1
e não A1
1 para resposta № 2
public static void main(String[] args)
{
int i=1;
for(char alph = "A"; alph <= "L"; alph++,i++)
{
System.out.print(alph);
System.out.print(i+" ");
}
}
0 para resposta № 3
alph + x
avalia a adição do código de caracteres ASCII para alph para x.
Por exemplo. O código ASCII para "A" é 65. É por isso que você obtém 66-77 para a primeira iteração do loop.
0 para a resposta № 4
Tente este;
for(int x = 1; x <= 12; x++)
{
System.out.print(alph + "" + x + " ");
}
Seu código mostra a soma de (int) alph + x
.
0 para a resposta № 5
Você pode usar String.valueOf (alph)
System.out.print(String.valueOf(alph) + x + " ");
0 para a resposta № 6
Os fatos
- você está usando 2 loops
for(char alph = "A"; alph <= "L"; alph++) //first loop A-L = 12x for(int x = 1; x <= 12; x++) //second loop 1-12 = 12x
significa que você passa sua impressão 144 vezes (12x12)
- você está imprimindo
char
Os problemas
- você quer imprimir 12 vezes não 144
- char é considerado como um tipo numérico
Solução
- remova o segundo loop e crie
int x
com valor inicial 1 - usar
String.valueOf(alph)
public static void outputFive() { //Output 5 int x = 1; for(char alph = "A"; alph <= "L"; alph++) { System.out.print(String.valueOf(alph) + x + " "); x++; } }
0 para resposta № 7
Você também pode usar o ASCII de caracteres
public static void main(String[] args) {
int i = 1;
for (int alph = 65; alph <= 76; alph++)
{
System.out.print((char)alph + "" + i + " ");
i++;
}
}
0 para a resposta № 8
Como todos os problemas, existe uma fase de análise de requisitos.
System.out.print("A1 B2 C3 D4 E5 F6 G7 H8 I9 J10 K11 L12");`
certamente satisfaz o funcional declaradorequisitos. Mas, também há um requisito não funcional para usar um loop porque há algum tipo de série nos dados. Existem vários padrões para ver nos dados. Na minha opinião, presumindo algum alfabeto e realizando aritmética em caracteres são práticas ruins. Então, eu tomo um alfabeto, como na matemática, como uma seqüência dada:
// For convenience, use a String (of char) instead of an array of whatever
final String alphabet = "ABCDEFGHIJKL"; // assumes one char per character
O problema torna-se então a saída dos elementos da seqüência junto com o índice baseado em 1 do elemento.
for (int i = 0; i < alphabet.length(); i++) {
System.out.print(String.format("%c%d ", alphabet.charAt(i), (i+1)));
}