【发布时间】:2019-07-05 18:08:46
【问题描述】:
(尝试学习java的第一天)
我有一个基本代码,它接受用户输入并检查它是整数、双精度还是字符串(按此顺序)。目前,如果输入是整数或字符串,它可以完美地工作,但如果它是双/十进制,也会触发字符串“if”语句的代码。如果我为双精度和整数切换“if”语句的位置,则整数开始触发字符串语句而不是双精度。我尝试将字符串语句放在最顶部,所以它上面没有任何东西,但这只是使得字符串语句覆盖它下面的语句。
出于某种原因,不是对字符串使用“if”语句,而是使用“else”有效(并且同时删除该语句会导致程序按预期运行)但我想了解为什么将来会发生这种情况项目。
import java.util.Scanner;
public class second {
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
System.out.print("Enter a number real quick: ");
if (userInput.hasNextInt()) {
int numberEntered = userInput.nextInt();
System.out.println("U owe me $" + numberEntered);
}
if (userInput.hasNextDouble()) {
double doubleEntered = userInput.nextDouble();
System.out.println("U owe me $" + doubleEntered);
}
if (userInput.hasNextLine()) {
String stringEntered = userInput.nextLine();
System.out.println("'" + stringEntered + "'" + " ain't a number dummy");
}
}
}
当我输入 2.1 时,我希望“你欠我 2.1 美元”,但我却得到“你欠我 2.1 美元” '' 不是数字假人”
*edit: 删除评论时删除关闭}
【问题讨论】:
-
您在
if(userInput.hasNextInt()之后缺少一个结束}。 -
使用 else if 条件
-
这段代码甚至无法编译。它什么也不输出
-
离题,您有格式问题。这对您来说可能是一个好的开始:google.github.io/styleguide/javaguide.html#s4-formatting。如果您使用 IDE,它应该有一个自动格式化代码的快捷方式。
-
当你输入
2.1时,你也按下了回车,所以现在输入的是2.1<eol>。调用nextInt()会消耗2.1,留下<eol>,所以当你调用nextLine()时,你会得到一个空字符串。 --- 相关问题:Scanner is skipping nextLine() after using next() or nextFoo()?
标签: java