我最近在业余时间开始学习java。因此,为了练习,我正在制作一个温度(摄氏或华氏温度)并将其转换为相反的程序。我已经导入了键盘扫描仪。
int temp;
String opposite, type;
double product;
System.out.print("Please enter a temperature: ");
temp = keyboard.nextInt();
System.out.println("Was that in Celsius or Fahrenheit?");
System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
type = keyboard.nextLine();
if (type == "C") // Only irrelevant temp conversion code left so I'm leaving it out
我是String和nextLine
的新手,程序只是跳过输入C或F的用户输入部分。有人会解释我能做些什么来解决这个问题吗?
谢谢!
答案 0 :(得分:0)
.nextInt()
未读取行尾字符"\n"
。
您需要在keyboard.nextLine()
之后添加.nextInt()
,然后才会有效。
答案 1 :(得分:0)
切勿在{{1}}之后使用Scanner#nextLine
。每当您在Scanner#nextInt
之后按下Enter按钮时,它将跳过Scanner#nextInt
命令。所以,
改变
Scanner#nextLine
到
int temp = keyboard.nextInt();
答案 2 :(得分:0)
另外,使用type.equals("C")
代替if (type == "C")
,后者则比较值的引用。
答案 3 :(得分:0)
致电
keyboard.nextLine();
在
temp = keyboard.nextInt();
因为nextInt()不使用\n
字符。
另外,将Strings
与.equals();
进行比较,而不是==
if(type.equals("C"));
答案 4 :(得分:0)
使用扫描仪类:
int temp;
java.util.Scanner s = new java.util.Scanner(System.in);
String opposite, type;
double product;
System.out.print("Please enter a temperature: ");
temp = s.nextInt();
System.out.println("Was that in Celsius or Fahrenheit?");
System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
type = s.nextLine();
if (type.equals("C")){
do something
}
else{
do something
}
更多输入参考:
Here是如何在java中比较字符串的精彩比较。
答案 5 :(得分:0)
您可以使用keyboard.next()
代替nextLine()
和
user1770155
提到比较你应该使用的两个字符串.equals()
以及我要做的事情,因为你要比较大写字母“C”是
type = keyboard.next().toUpperCase();
if (type.equals("C"))
答案 6 :(得分:0)
对于您的代码,将nextLine();
更改为next();
,它将有效。
System.out.println("Was that in Celsius or Fahrenheit?");
System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
type = keyboard.next();
让你知道发生了什么事:
- nextLine():将扫描程序推进到当前行,返回跳过的输入。
- next():查找并返回此扫描仪的下一个完整令牌。
同样许多答案都说使用equals()
而不是==
==
仅检查对象的引用是否相等。 .equal()
比较字符串。
了解更多Here