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
相关产品推荐
相关产品推荐

