2

Eclipse で次のコードを入力すると、1 行あたり 10 文字の行が期待されました。しかし、最初と最後の行が3文字しかない理由がわかりません。誰でも助けることができますか?

package chapter4;
import java.util.*;

public class DisplayChars {

    public static void printChars(char c1, char c2, int num){

        for(int i = (int)c1; i <= (int)c2; i++){
            if(i % num == 0)
                System.out.println("");

            System.out.print((char)i);
        }           
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("please enter two characters and the number per line");

        char c1 = (char)input.next().charAt(0);
        char c2 = (char)input.next().charAt(0);
        int numberPerLine = input.nextInt();

        printChars(c1, c2, numberPerLine);
    }
}

出力は次のとおりです。

please enter two characters and the number per line
a
z
10
abc
defghijklm
nopqrstuvw
xyz
4

4 に答える 4

2

の文字コードaは 97 です。97 ~ 99 文字なので、文字が 1 行にa表示されます。スルーはc100-109 、スルーは110-119、スルーは120-122です。dmnwxz

i最初の行で 10 を取得するには、いつ改行を印刷するかを決定するために as indicator を使用しないでください。そのためには、別の変数を使用してください。

于 2013-10-30T17:20:50.753 に答える
1

ゼロではなく、「a」から数え始めます。特に、'a' % 10 はゼロではありません。

于 2013-10-30T17:21:01.007 に答える
1

ASCII では a=97 なので、3 回繰り返した後に d=100 に遭遇します。そして、最後の行でループが終了するので、最後の 3 文字です。

于 2013-10-30T17:21:40.243 に答える
0

説明は、最初の文字が「a」の場合、a の int 値は 10 の倍数ではないため、(i % num) はループの最初の繰り返しで 7 に評価される可能性が高く、3 文字のみが出力されるということです。最初の行に。次のように書き換えることができます。

public static void printChars(char c1, char c2, int num){
    int count = 0;
    while (c1 <= c2) {
       System.out.print(c1);
       count++;
       if (count == num) {
         count = 0;
         System.out.println("");
       }
       c1++;
    }
}
于 2013-10-30T17:29:03.797 に答える