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"声明正确。
谢谢!
答案 0 :(得分:2)
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()
答案 1 :(得分:1)
System.in.read()
没有按你的想法行事。它从输入读取一个字节并返回它的整数值。如果键入“1”,System.in.read()
将返回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进行比较。