You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java程序运行时第一个InputDialog输入后无响应该如何修复?

问题根因

你的代码核心问题是混用了图形界面输入组件JOptionPane和控制台输入类Scanner,两者输入渠道完全独立,触发了程序阻塞:

  • JOptionPane.showInputDialog()弹出窗口中输入的内容,只会作为该方法的返回值返回,不会同步到Scanner监听的控制台输入流中
  • 你调用弹窗后直接执行input.nextDouble(),程序会停在原地等待控制台输入内容,你不在控制台输入的话,自然不会有后续响应,和你在弹窗里有没有输入内容无关

修复方案

你用JOptionPane做输入就完全不需要引入Scanner,直接接收弹窗的返回值转成double类型即可,修正后的核心代码如下:

import javax.swing.JOptionPane;

public class ShippingCost
{ 
   public static void main(String[] args) 
   {
      // 接收长度输入:先拿到弹窗返回的字符串,再转成double
      String lengthStr = JOptionPane.showInputDialog("Please enter the length of your package: ");
      double length = Double.parseDouble(lengthStr);
 
      String widthStr = JOptionPane.showInputDialog("Please enter the width of your package: ");
      double width = Double.parseDouble(widthStr);
 
      String heightStr = JOptionPane.showInputDialog("Please enter the height of your package: ");
      double height = Double.parseDouble(heightStr);
 
      double dimensions = length * width * height;
      System.out.println("The total dimensions of your package is: " + dimensions);
      
      // 后续逻辑可继续补充
      double charge=0;
      double surcharge;
      double additionalCharge;
      double totalCost;
   }
}

补充说明

如果后续需要做输入合法性校验,可以加try-catch捕获NumberFormatException,避免用户输入非数字内容时程序直接崩溃。

内容的提问来源于stack exchange,提问作者Jeriel Fernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:54:03