为什么我的程序在 System.in.read() 函数后停止?

Why is my program stopping after the System.in.read() function?

package myfirstclass;

import java.io.IOException;

public class MyFirstClass {

    public static void main(String[] args) throws IOException {


        Car RedCar;
        RedCar = new Car();

        RedCar.carColor = "red";
        RedCar.milesPerGallon = 25;
        RedCar.numDoors = 2;

        Car BlueCar = new Car();
        BlueCar.carColor = "blue";
        BlueCar.milesPerGallon = 50;
        BlueCar.numDoors = 4;

        System.out.println("Choose a car...");
        int read = System.in.read();


        if(read == 1){
            System.out.println("Hello, and your car is...");

            System.out.println("Red!");

        }



    }
}

我输入数字后,比如1,它就显示"Build Successful!",这是为什么?我该如何修复它以确保它读取我的输入并正确遵循 "if" 语句。

谢谢!

System.in.read()并没有按照你的想法去做。它从输入中读取一个字节,并returns它的整数值。如果键入“1”,System.in.read() returns 0x31 或 49。不是 1.

不幸的是,你想要的在 Java 中太复杂了。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
if (Integer.parseInt(in.readLine()) == 1) {
    // do something
}

第一行创建了一个空洞的对象,Java 需要它来读取行。第二行使用 in.readLine() 从输入中读取一行,使用 Integer.parseInt 将其转换为整数,然后将其与 1.

进行比较

System.in.read() 正好读取一个字节。在您的示例中,变量 read 将保存值 49,而不是 1。

改用扫描仪:

Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();

有用的链接:

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read()