阅读后,JOptionPane消失了

时间:2017-03-12 03:55:57

标签: java

我在JOptionePane上进行双输入以计算矩形的面积。所以我需要用户将lengthwidth放在一起。但是,在第一次输入之后,我立即放置了一个阅读器,并且第二个JOptionPane的宽度没有弹出。我意识到这需要很多工作。

import java.util.Scanner;
import javax.swing.JOptionPane;


public class Project3_1 {

public static void main(String[] args) {

        Scanner reader =  new Scanner(System.in);  
        int length;
        int width;
        int surfacearea;

        JOptionPane.showInputDialog("Enter the length of the edge: ");
        length = reader.nextInt();  // doesnt work past this
        JOptionPane.showInputDialog("Enter the width of the edge: ");
        width = reader.nextInt();

        surfacearea = length * width;

        JFrame someFrame = new JFrame();    // how to insert surfacearea??
        JLabel label = new JLabel();
        someFrame.add(label);
        someFrame.setSize(230, 230);
        someFrame.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:1)

你必须像这样处理JOptionPane的输入:

String inputLength = JOptionPane.showInputDialog("Enter the length of the edge: ");
int length = Integer.parseInt(inputLength);

删除Scanner,因为他正在等待控制台中的输入。

答案 1 :(得分:1)

您正在混合向程序输入数据的方式。让我们开始吧:

Scanner reader = new Scanner(System.in);

上面的行允许您从键盘捕获命令行中的数据。

JOptionPane.showInputDialog("Enter the length of edge: ");

此选项窗格正确显示,您输入一个值,然后没有任何反应。这是因为您的程序正在等待在命令行

中输入内容
length=reader.nextInt();

当您的程序到达上面一行时, reader.nextInt() 会停止该程序,直到您在命令行中输入内容为止。

正确的方法应该是这样的:

length = Integer.parseInt(JOptionPane.showInputDialog("Enter the length of the edge: "));
width = Integer.parseInt(JOptionPane.showInputDialog("Enter the width of the edge:"));

并删除:

length = reader.nextInt();
width = reader.nextInt();