首页 > 解决方案 > 使用循环从 int 值打印字符,每行输出所需的数字数量

问题描述

我在使用以下代码时遇到问题:

//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);
    }
}

前面的代码什么都没有打印出来,我希望它以每行选定的字符数将选定的字符打印到不同的选定字符。不确定我在哪里犯了错误。

对于这个输入,我想要输出:

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

(它的范围从第一个char通过到小于最后一个,char一行中的 's与 一样多numberPerLine

标签: java

解决方案


为此,您不需要两个循环。由于您i在内部循环中使用,但从不增加它,您会得到相同的字母打印numberPerLine时间。只需检查一下模数numberPerLine是否等于numberPerLine - 1(如果已numberPerLine打印元素):

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 

推荐阅读