繁体   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