如果我有n个数字且最大数字是6且最大字母是F,那么最好的方法是什么。
A1
A2
A3
A4
A5
A6
B1
B2
etc..
int numList = 36;
char letter;
for (int i=1; i<=36; ++i){
int a = numList/6;
letter = 'A';
for (int j=0; j<= a; j++){
System.out.println(letter +"" + i);
letter++;
}
}
答案 0 :(得分:2)
简而言之:
public static void main(String[] args) {
for (int i = 0; i < 6; i++) {
char c = (char) (i + 65);
for (int j = 1; j <= 6; j++) {
System.out.println("" + c + j);
}
}
}
长期:
你应该练习解决问题的技巧。理解那些小问题会在编程生涯中为你提供很多支持。
解决问题时最重要的技能是分解小问题。首先,您看到输出为:A1 A2 A3 ... B1 B2 B3 ..
看起来您可以将每个字符串(即:A1)拆分为2部分:第一部分从A到F,第二部分从1到6.这是应用两个嵌套循环的众所周知的模式。这是伪代码:
public static void main(String[] args) {
for (char c = A to F) {
for (int j = 1; j <= 6; j++) {
System.out.println("" + c + j);
}
}
}
你看到了。第一个循环不正确(语法语法)。所以我们应该学习新东西:Java中的char只是一个整数。 (在大多数语言中都是如此,例如C#,javascript ......)但不是全部。所以我在ascii table查找。我看到A
到F
从65,66,67开始......所以我可以用6个元素开始循环。我添加到65的每个元素。例如:
0 -> 65 -> A
1 -> 66 -> B
2 -> 67 -> C
正如您猜测的那样,它成为我上面发布的最终代码。希望这能帮助你:)
答案 1 :(得分:1)
这将是代码:
int[] array_of_ints; // declare and add the values into it - 1-6
String[] array_of_alphabtes; // declare and add the values into it - A-F
for (int i = 0; i < array_of_alphabtes.length; i++) {
for (int j = 0; j < array_of_ints.length; j++) {
System.out.println(array_of_alphabtes[i] + "" + array_of_ints[j]);
}
}
答案 2 :(得分:1)
更改您的代码:
int numList = 36 / 6;
char letter = 'A';
for (int i = 1; i <= numList; ++i) {
for (int j = 1; j <= numList; j++) {
System.out.println(letter + "" + j);
}
letter++;
}
答案 3 :(得分:0)
当你有一个嵌套循环时,每次外循环运行时,整个内循环以及外循环体的其余部分都会运行。
这里,每次运行内部for
时,内循环的主体执行6次,这意味着你打印6行。
所以你写它的方式:外循环执行36次,每次外循环运行,内循环执行6次。这意味着内循环总共执行36 * 6 = 216次,导致打印216行。那不是你想要的。您希望外循环仅运行6次,因此您的第一个for
需要更改。
嵌套循环的另一个特性:内循环比外循环重复得更快。所以在你的情况下,当外循环的第一次迭代运行时,内循环执行6次。 然后我们进入外循环的下一次迭代,内循环执行另外6次;只有然后我们第三次执行外循环,依此类推。
根据您想要的输出,您希望数字的变化速度快于字母。这意味着在内循环中数字需要增加1,并且在外循环中需要增加字母。但是你正在向后做 - 你在内循环中增加字母,在外循环中增加数字(i
)。
我不想给你代码 - 我希望我已经给你足够的信息,你可以自己修复它。请在查看别人给你的代码之前尝试这样做。