如何为输入的不同类型的数据显示不同的消息?我只希望用户能够输入整数,但如果他们输入其他内容,那么我希望为每种类型提供自定义消息。例如,
目前我正在使用这个代码,如果它不是整数,它只允许我显示一条消息
printMenuOption();
if (!sc.hasNextInt()){
System.out.println("Please enter a number from 1 to 10");
sc.nextLine();
}else{
returnDataMenu(sc.nextInt());
}
按照下面的方法去做,它会解决你的问题,
while (sc.hasNext()) {
if (sc.hasNextInt()) {
returnDataMenu(sc.nextInt());
} else if (sc.hasNextLong()) {
System.out.println("You can't enter a long number, please use a whole number from 1-10");
} else if (sc.hasNextDouble()) {
System.out.println("You can't enter a number with a decimal, please use a whole number from 1-10");
} else if (sc.hasNextBoolean()) {
System.out.println("You can't enter a boolean, please use a whole number from 1-10");
} else if (sc.next() != null) {
System.out.println("You can't enter a string, please use a whole number from 1-10");
} else if (sc.nextLine().length() <= 1) {
System.out.println("You can't enter a char, please use a whole number from 1-10");
}
}
java.util.Scanner有许多hasNextXXX方法可用于验证输入。下面的链接对它们进行了概述:
http://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html#hasNext(java.lang.String)
希望这能帮到你。
Scanner myInput = new Scanner(system.in);
do {
printMenuOption();
if (!myInput.hasNextInt()){
if(myInput.hasNextDouble()){
System.out.println("You can not use a decimal number!");
System.out.println("Please try again, choose a number from 1 to 10.");
}else if(myInput.nextLine().length() <= 1){
System.out.println("You can not use a character as an entry");
System.out.println("Please try again, choose a number from 1 to 10.");
}else if(myInput.nextLine().length() > 1){
System.out.println("You can not enter a string");
System.out.println("Please try again, choose a number from 1 to 10.");
}
else{
System.out.println("Please enter a number from 1 to 10");
userInput = myInput.nextLine();
}
}
else{
returnDataMenu(myInput.nextInt());
}
} while (cont == true);
首先为标题感到抱歉,想不出别的了。我目前正在完成一个关于JetBrains Hyperskill的项目,该项目是一个单位转换器,用户可以在其中转换重量、长度和温度单位。我几乎完成的项目,转换工作很好,但我有一个问题与用户输入。 用户输入由以下部分组成: 因此,用户可以输入如下内容: null null -要转换的数量 -这应该是像“摄氏”和“摄氏度”这样的输入 -随机单词 -这也应该读取输入,如“
我有一个类,它创建多个对象,并将它们放入中,如下所示: 我有一个应用程序,它从控制台扫描输入“add”,如果找到,就调用方法,如下所示: 应用程序应该允许用户输入“add”,但在调用方法后,将出现错误“no line found”。 我猜这是因为方法中的没有关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我该如何修复它? 请注意,这个程序还没有完成,因为我将添加一个出售这些股票的销售方法。这
问题内容: 据我所知,在Java中从文件读取基于字符的数据的两种最常见的方法是使用或。我也知道通过使用缓冲区来避免物理磁盘操作来有效地读取文件。我的问题是: 是否执行以及? 为什么你会选择在反之亦然? 问题答案: 用于从流的内容中解析令牌,而只是读取流,并且不执行任何特殊的解析。 实际上,你可以将传递给作为要解析的字符源。
在Bean验证规范(JSR303和JSR349)和文档中,都没有提到@digits对Double或Float类型的支持。它只说支持以下类型: BigDecimal BigInteger CharSequence 字节、short、int、long及其各自的包装器类型
问题内容: 在Java中,允许以下操作: 在这里,c将保持值“ B”。上面,首先对表达式求值。所以’A’被转换为65,整个表达式的计算结果为66,然后将66转换为’B’,因为我们将值存储在char中。 但是,以下给出了编译时错误: 关于Java如何以不同的方式看待表达式的解释是什么?顺便说一句,以下内容也可以正常工作: 问题答案: 第一个示例(编译)很特殊,因为加法的两个操作数都是文字。 以下是一
我如何解释以下内容: 打印2.29999 打印2.3