【问题标题】:Throw an error when a string is entered instead of an int [duplicate]输入字符串而不是 int 时抛出错误 [重复]
【发布时间】:2014-11-06 06:26:46
【问题描述】:

我正在为我的班级做作业。如果输入了不正确的整数,我已经编写了一种方法来引发错误,并且我试图在输入字符串而不是 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();
}

添加了这个 sn-p 来捕获异常。感谢阿尔马斯谢赫。

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

【问题讨论】:

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


【解决方案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 异常,你可以捕捉到异常并说你让用户知道用户输入了无效的输入并让他重试。

【讨论】:

  • 这对我有用!非常感谢。
  • 不客气。
【解决方案2】:

检查 java 文档中的 nextInt()——stdin 是扫描仪吗?如果是这样,如果输入了一些非整数文本,nextint() 将抛出异常。你可能想抓住它并打印你自己的漂亮错误。不过,您可能会比作业预期的更进一步。短语“如果输入了不正确的整数则抛出错误”可能暗示只会输入整数。这取决于导师/班级。

【讨论】:

    【解决方案3】:
    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();
            }
    
        }
    }
    

    我希望这将作为一个例子。当你给出一个字符或字符串时。引发异常。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多