我正在玩Java。我试图强制我的程序只接受3位数字。 我相信我已成功使用while循环完成此操作(如果我错了,请纠正我)。 但是,如果用户输入字符串,我该如何打印错误语句。例如:“abc”。
我的代码:
import java.util.Scanner;
public class DigitSum {
public static void main(String[] args) {
Scanner newScan = new Scanner(System.in);
System.out.println("Enter a 3 digit number: ");
int digit = newScan.nextInt();
while(digit > 1000 || digit < 100)
{
System.out.println("Error! Please enter a 3 digit number: ");
digit = newScan.nextInt();
}
System.out.println(digit);
}
}
答案 0 :(得分:2)
在try catch块中嵌入读取int的代码,只要输入错误的输入,它就会生成异常,然后在catch块中显示你想要的任何消息
答案 1 :(得分:2)
如果输入错误,nextInt
方法本身会抛出InputMismatchException
。
try {
digit = newScan.nextInt()
} catch (InputMismatchException e) {
e.printStackTrace();
System.err.println("Entered value is not an integer");
}
应该这样做。
答案 2 :(得分:2)
这个怎么样?
public class Sample {
public static void main (String[] args) {
Scanner newScan = new Scanner (System.in);
System.out.println ("Enter a 3 digit number: ");
String line = newScan.nextLine ();
int digit;
while (true) {
if (line.length () == 3) {
try {
digit = Integer.parseInt (line);
break;
}
catch (NumberFormatException e) {
// do nothing.
}
}
System.out.println ("Error!(" + line + ") Please enter a 3 digit number: ");
line = newScan.nextLine ();
}
System.out.println (digit);
}
}
regexp版本:
public class Sample {
public static void main (String[] args) {
Scanner newScan = new Scanner (System.in);
System.out.println ("Enter a 3 digit number: ");
String line = newScan.nextLine ();
int digit;
while (true) {
if (Pattern.matches ("\\d{3}+", line)) {
digit = Integer.parseInt (line);
break;
}
System.out.println ("Error!(" + line + ") Please enter a 3 digit number: ");
line = newScan.nextLine ();
}
System.out.println (digit);
}
}
答案 3 :(得分:0)
当您获取输入或拉动输入字符串时,请执行parseInt
。
如果yourString
不是Integer
:
Integer.parseInt(yourString)
如果它抛出一个异常,你知道它不是一个有效的输入,所以此时你可以显示一条错误信息。以下是parseInt
上的文档:
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#parseInt(java.lang.String)
答案 4 :(得分:0)
您可以通过以下方式检查String是否具有数值:
1)使用try / Catch Block
try
{
double d = Double.parseDouble(str);
}catch(NumberFormatException nfe) {
System.out.println("error");
}
2)使用正则表达式
if (!str.matches("-?\\d+(\\.\\d+)?")){
System.out.println("error");
}
3)使用NumberFormat类
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
if(str.length() != pos.getIndex()){
System.out.println("error");
}
4)使用Char.isDigit()
for (char c : str.toCharArray())
{
if (!Character.isDigit(c)){
System.out.println("error");
}
}
您可以查看How to check if a String is numeric in Java了解更多信息
答案 5 :(得分:0)
我将如何使用if语句。 if语句应该是这样的:
if(input.hasNextInt()){
// code that you want executed if the input is an integer goes in here
} else {
System.out.println ("Error message goes here. Here you can tell them that you want them to enter an integer and not a string.");
}
注意:如果您希望它们输入字符串而不是整数,请更改条件
if语句到input.hasNextLine()
而不是input.hasNextInt()
。
第二个注意:input
是我命名为Scanner的内容。如果您将其命名为煎饼,则应键入pancakes.hasNextInt()
或pancakes.hasNextLine()
。
希望我帮助并祝你好运!
答案 6 :(得分:0)
如果用户输入'abc'等字符串而不是整数值,则需要异常 1}}适合你。
让我举一个基本的例子。
InputMismatchException