用户输入不使用keyboard.nextLine()和String(Java)

时间:2015-04-15 02:41:30

标签: java

我最近在业余时间开始学习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的用户输入部分。有人会解释我能做些什么来解决这个问题吗?

谢谢!

7 个答案:

答案 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
}

更多输入参考:

Scanner

BufferedReader

String

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