簡體   English   中英

For Loop有什么問題?

[英]What's wrong with For Loop?

package mygradeloops;

import java.io.IOException;

public class MyGradeLoops {

    public static void main(String[] args) throws IOException {
        char x = 'A';

        for (x='0';x<'9';x++){

        System.out.println("Please enter in one of your grades.");

        System.in.read();

        System.out.println("Keep going!");


        }   
    }   
}

該代碼在第一個“等級”之后保持兩次打印。 有誰知道為什么要打印兩次? 我做錯了“ For Loop”嗎?

這是“兩次打印”,因為當您按回車鍵輸入一個字符時,實際上是在寫兩個字符:您鍵入的字符和\\n (換行符)。

添加第二個System.in.read(); 調用以讀取換行符:

for (x='0';x<'9';x++){
    System.out.println("Please enter in one of your grades.");

    System.in.read(); // your character
    System.in.read(); // newline

    System.out.println("Keep going!");
}

同樣,不需要將x初始化為'A'char x; 很好 實際上,在此循環中使用char沒有任何意義,首選使用int

System.inInputStream )的read方法僅從輸入流讀取一個字節的數據。 因為必須按“ Enter”鍵才能將輸入發送到流,所以流上有兩個字符-鍵入的字符和換行符。

for循環循環兩次,然后“兩次打印” Keep going! 並且Please enter in one of your grades. 因為每次迭代都會讀取流中兩個字符之一。

System.in包裝在InputStreamReader然后再包裝BufferedReader或者僅使用System.in初始化Scanner會更容易。 使用BufferedReader您可以僅調用readLine() ,而使用Scanner您可以調用nextLine()

同樣,還不清楚為什么要使用char s從'0'循環到'9' int用作從09 a and循環會更清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM