为什么我的程序在 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()
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()