Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
输入双精度时Java中出现错误IOException_Java_String_While Loop_Double_Java.util.scanner - Fatal编程技术网

输入双精度时Java中出现错误IOException

输入双精度时Java中出现错误IOException,java,string,while-loop,double,java.util.scanner,Java,String,While Loop,Double,Java.util.scanner,我运行此代码时遇到问题。当我在这个程序中输入数字时,它显示了这个问题 java.io.IOException: Stream closed 1. See Income 2. Add Menu 3. Delete Menu 4. Back Menu at java.base/sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:45) at java.base/sun.nio.cs.StreamEncoder.flush

我运行此代码时遇到问题。当我在这个程序中输入数字时,它显示了这个问题

java.io.IOException: Stream closed
    1. See Income   2. Add Menu
    3. Delete Menu  4. Back Menu
at java.base/sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:45)
at java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
at java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:254)
at main.addMenu(main.java:181)
at main.adminMenu(main.java:68)
at main.AdminLogin(main.java:51)
at main.main(main.java:32)
at main.main(main.java:18)
我创建的代码如下

while (true) {
            DecimalFormat format = new DecimalFormat("0.#");
            System.out.print("Enter the " + menuName + " Price: $");
            Double menuPrice = scanOption.nextDouble();
            if (menuPrice < 0){
                System.out.println("Price can not below than 0");
            } else {
                String newMenuPrice = format.format(menuPrice).toString();
                pw.append(newMenuPrice);
                pw.append('\n');

                break;
            }
            }
        pw.close();
        pw.flush();
while(true){
DecimalFormat=新的DecimalFormat(“0.#”);
System.out.print(“输入“+menuName+”价格:$”;
Double menuPrice=scanpoption.nextDouble();
如果(菜单<0){
系统输出打印项次(“价格不能低于0”);
}否则{
字符串newMenuPrice=format.format(menuPrice.toString();
附加(newMenuPrice);
pw.append('\n');
打破
}
}
关闭();
pw.flush();
  • 您正在循环内关闭
    pw
    。移动
  • 您正在刷新
    pw
    ,如果您要关闭它,这是多余的,如果您已经关闭了它,这是错误的。移除

  • 我猜您在执行追加操作之前调用了
    .close()
    。您能提供您称之为pw.close()的代码段吗?哦,是的。我忘了移动pw.close()。但是我还是遇到了同样的问题。@KevinJulianto你能更新你的代码吗,你把
    pw.close()
    放在哪里了?它应该在while循环之后。@BentayeI已经更新了上面的代码和新错误。请正确格式化和缩进您的代码,以便理解,包括您自己。