Netbeans 中 System.out.print 的奇怪行为

3
在下面的代码片段中,Scanner声明后紧接着的System.out.print语句给出了奇怪的结果。它似乎执行了两次。我已经调试过了,在执行print语句之后,立即在标准输出中得到以下内容:
运行: 输入一个二进制数字:输入一个二进制数字:
我添加了“freaking”以验证它是否在我不知道的情况下进入while循环打印。
供您参考,这是在64位vista机器上使用64位JDK的netbeans IDE 6.7.1中执行的。希望您能看到我的错误!
谢谢!
编辑:当在命令行上执行Netbeans生成的JAR文件时,该语句只会打印一次。有没有遇到这种奇怪行为的Netbeans用户,可能知道我如何防止这种情况发生。我讨厌在开发周期中在IDE之外工作。
private void getInput()
{
    Scanner scanner = new Scanner(System.in);

    System.out.print("Input a freaking binary number:  ");

    // Grab the next inputed long and save it in the currentValueInBinary
    // member variable
    setCurrentValueInBinary(scanner.nextLong());

    // Loop until a valid binary number is retrieved
    while (!isNumberBinary(currentValueInBinary))
    {   // Input was negative, report error and re-request input
        System.out.println("Input must be a Binary value");
        System.out.print("\nInput a binary number:  ");

        setCurrentValueInBinary(scanner.nextLong());
    }
}

1
如果您直接从命令行执行它,是否会得到相同的结果?如果您能将其重构为一个简短但完整的程序,那么调试起来会更容易。 - Jon Skeet
使用Netbeans生成的JAR文件在命令行上运行正常,因此我认为这是一个Netbeans的问题。虽然我仍然想要找出原因,但至少我们已经缩小了范围! - Brian
1个回答

3
在Netbeans中,print(String s)函数中的“冒号后2个空格”错误?
在以下代码行中:
System.out.print("Input a freaking binary number: ");
删除第二个尾随空格即可。

天啊,你一定是在开玩笑!这就是它! - Brian
你知道这个问题会在不久的将来得到修复吗? - Brian
非常有趣,我以前从未注意到这一点。我要复制一下。我感到奇怪地好奇。 - Berek Bryan
我之前不知道Netbeans中有这个bug,所以我的第一行是一个问题,但我猜我表达得不够清楚 :)@Brian: 或许Netbeans问题跟踪器可以回答你的问题,但是我在问题跟踪器上进行了快速搜索,没有找到任何结果。看起来这个bug与Netbeans控制台如何处理“:”(分号、空格、空格)序列有关。如果你在同一行中的某些文本(1个或多个字符)后打印()该序列,则整行(包括任何后续文本)将被复制并在同一行上输出一次。 - Ma3x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接