2 回答

TA贡献1786条经验 获得超13个赞
为此,您不需要两个循环。由于您在内部循环中使用,但从不增加它,因此您将获得相同的字母打印时间。只需检查一下,看看 的模量是否等于(如果有打印的元素):inumberPerLinenumberPerLinenumberPerLine - 1numberPerLine
public static void printChars(char ch1, char ch2, int numberPerLine) {
for (char i = ch1; i<ch2; i++) {
System.out.printf("%c ", i);
if((i-ch1) % numberPerLine == numberPerLine-1) {
System.out.println("");
}
}
}
这将给予:
1 2 3 4 5 6 7 8 9 :
; < = > ? @ A B C D
E F G H I J K L M N
O P Q R S T U V W X
Y

TA贡献1895条经验 获得超3个赞
方法中的第一个循环中存在逻辑错误。循环应检查是否要执行。如果在调用方法时执行正确的参数,则当前参数将是无限循环。forprintCharsi is less than ch2
所以,我把这个循环改成了,正如你可能已经猜到的那样,它是有效的。而且,如果你想打印包括最后一个字符,那么你需要检查直到相等forfor (int i = ch1; i>ch2; i++)for (int i = ch1; i<ch2; i++)for (int i = ch1; i<=ch2; i++)
//Program 6.12
public class Ex6_12 {
public static void printChars(char ch1, char ch2, int numberPerLine) {
for (int i = ch1; i < ch2; i++) {
for (int j = 0; j <= numberPerLine; j++) {
System.out.printf("%c ", (char) (i));
}
System.out.println("");
}
}
public static void main(String[] args) {
printChars('1', 'Z', 10);
}
}
打印包括最后一个字符:
//Program 6.12
public class Ex6_12 {
public static void printChars(char ch1, char ch2, int numberPerLine) {
for (int i = ch1; i <= ch2; i++) {
for (int j = 0; j <= numberPerLine; j++) {
System.out.printf("%c ", (char) (i));
}
System.out.println("");
}
}
public static void main(String[] args) {
printChars('1', 'Z', 10);
}
}
添加回答
举报