【问题标题】:Problems to validate a number in try-catch block in Java [closed]在Java中验证try-catch块中的数字的问题[关闭]
【发布时间】:2015-12-25 17:42:12
【问题描述】:

我正在尝试使用NetBeans创建一个引入int的方法,但是我在运行该方法时出现问题,控制台消息的顺序不正确,有人知道是什么问题:

public static void main(String[] args)
{
    Scanner teclado = new Scanner(System. in );
    int num;
    boolean error;

    public int introducirDatos()
    {
        do
        {
            error = false;
            try
            {
                System.out.println("Introduzca un número entero: ");
                num = Integer.valueOf(teclado.nextLine());

            }
            catch (NumberFormatException e)
            {
                System.err.println("Debe introducir un número y sin decimales, vuelve a intentarlo.\n");
                error = true;
            }
        } while (error == true);
        return num;
    }
}

谢谢。

【问题讨论】:

  • 您对自己遇到的问题不是很清楚。具体来说你得到什么输出?你期望得到什么输出?
  • 问题是我运行程序时 System.out.print 和 System.err.print 出现的顺序,它们看起来混淆了。
  • 你期待什么,你会得到什么?

标签: java netbeans try-catch


【解决方案1】:

我相信您是在 IDE(IntelliJ IDEA 或 Eclipse)中运行代码。 System.out.println("Introduzca un número entero: "); 行打印到标准 OUT,但 System.err.println("Debe introdu... 打印到标准 ERROR。这就是输出混乱的原因。将System.err 替换为System.out 以使消息一个接一个地打印出来。 顺便说一句,您尚未指定您使用的语言。是Java吗?您可能需要更新问题标签。

【讨论】:

  • 非常感谢!!这正是我遇到的问题。你能告诉我为什么会这样吗,为什么我不能使用 System.err?
  • 一般来说,每个程序都有3个标准输入输出(I/O)通道。您可以在en.wikipedia.org/wiki/Standard_streams 中了解它们。 Stderr 通常与 stdout 分开,以便可以区别对待 - 例如,写入文件的所有错误和打印在屏幕上的所有消息。问题的发生是因为 IDE(Netbeans)如何处理流,我假设您的原始程序将在终端中正确运行。我认为您不需要打印到 stderr,因为您的程序以交互模式运行并且您实际上希望看到错误消息。
  • 您也可以在stackoverflow.com/questions/6121786/… 中找到有用的讨论
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
相关资源
最近更新 更多