输入字符串而不是int时抛出错误

时间:2014-11-06 06:26:46

标签: java string exception-handling int java.util.scanner

我正在为我班上班做作业。我写了一个方法来输入一个错误,如果输入一个不正确的整数,我试图在输入字符串而不是int时给出错误消息,但我不知道如何。我不允许使用parsInt或内置字符串方法。我将不胜感激任何帮助。

int playerNum = stdin.nextInt();
while (invalidInteger(playerNum) == -1 || invalidInteger(playerNum) == -2 || invalidInteger(playerNum) == -3)
{
    if(invalidInteger(playerNum) == -1)
    {
        System.out.println("Invalid guess. Must be a positive integer.");
        System.out.println("Type your guess, must be a 4-digit number consisting of distinct digits.");
        count++;
    }
    if(invalidInteger(playerNum) == -2)
    {
        System.out.println("Invalid guess. Must be a four digit integer.");
        System.out.println("Type your guess, must be a four digit number consisting of distinct digits.");
        count++;
    }
    if(invalidInteger(playerNum) == -3)
    {
        System.out.println("Invalid guess. Must have distinct digits.");
        System.out.println("Type your guess, must be a four digit number consisting of distinct digits.");
        count++;
    }
    playerNum = stdin.nextInt();
}

添加了此代码段以捕获异常。感谢almas shaikh。

try {
    int playerNum = scanner.nextInt();
    //futher code
} catch (InputMismatchException nfe) {
    System.out.println("You have entered a non numeric field value");
}

4 个答案:

答案 0 :(得分:1)

使用以下代码:

try {
        int playerNum = scanner.nextInt();
        //futher code
    } catch (InputMismatchException nfe) {
        System.out.println("You have entered a non numeric field value");
    }

当您输入字符串而不是整数时,扫描程序抛出InputMismatchException。因此,下次当您尝试输入String时,它将抛出InputMismatchException异常,您可以捕获异常并说您让用户知道用户输入了无效输入并让他重试。

答案 1 :(得分:0)

好吧,您可以使用next()获取String的值,然后解析该值,看看是否输入了StringInteger

String str = stdin.next();
for (char c:str.toCharArray()) {
    if (!Character.isDigit(c)) {
        throw new IllegalArgumentException("Invalid character entered: " + c);   
    }
} 

答案 2 :(得分:0)

检查java doc for nextInt() - 是stdin扫描器吗?如果是这样,如果输入了一些非整数文本,则nextint()将抛出异常。您可能想要捕获它并打印自己的漂亮错误。但是,你可能会比任务期望更进一步。短语"如果输入了错误的整数,则抛出错误"可能意味着只会输入整数。这取决于教师/班级。

答案 3 :(得分:0)

import java.util.*;
public class Test 
{
    public static void main(String args[]) 
    {
        Scanner in = new Scanner(System.in);
        try
        {
            int i = in.nextInt();
        }
        catch(InputMismatchException e)
        {
            e.printStackTrace();
        }

    }
}

我希望这会以服务器为例。当你给一个字符串或字符串。异常被提出。