2013-10-30 45 views
2

我在eclipse中輸入了以下代碼,並且每行有10個字符的預期行。但是,我無法弄清楚爲什麼第一行和最後一行只有3個字符。誰能幫忙?爲什麼for循環中10行的格式在控制檯出錯?

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 
+0

如果你的問題解決了,你應該接受一個答案。 – AsG

回答

2

a字符代碼是97,您看到的字符a通過c在同一行,因爲這是個字符97-99。然後dm是100-109,nw是110-119,並且xz是120-122。

要開始使用10行,請不要使用i作爲指示符以確定何時打印換行符。爲此目的使用另一個變量。

1

您從'a'開始計數,而不是零。值得注意的是,'%'不等於零。

1

在ASCII a = 97中,經過3次迭代後,您會遇到d = 100。在最後一行中,循環結束,最後3個字符。

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++; 
    } 
}