将扫描仪变为JOptionPane

时间:2017-01-07 08:14:45

标签: java java.util.scanner joptionpane

我要从用户获得整数半径,然后显示圆的面积和周长。如果用户输入负整数或除整数(a或5.6)以外的其他内容,则会要求用户重新输入。

下面是捕获错误输入的代码,但它使用的是Scanner,我需要使用JOptionPane。

import java.util.Scanner;

public class GetCircle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
    int radius = 0;
    System.out.print("Please enter size of radius (Must be integer): ");
    while (true){
        if(input.hasNextInt()){ 
        radius = input.nextInt();
        if (radius < 0){
            System.out.println("That is not a valid number, please try again :");

        }   else {
        System.out.println("The radius is: " + radius);
        }
        } else {
            System.out.println("That is not a valid number, please try again :");

            input.next();

        }
    }   
}
}

我不知道如何使用带有JOptionPane的hasNextInt ....有人可以帮忙吗?

这是我现在对JOptionPane所拥有的:

import javax.swing.JOptionPane;

public class Radius
{
public static void main(String[] args)
{

   String radius = JOptionPane.showInputDialog(null,"Enter 
Radius","Radius",JOptionPane.QUESTION_MESSAGE);

   Integer.parseInt(radius);

   JOptionPane.showMessageDialog(null,"the string you entered is: " + radius, "results",JOptionPane.PLAIN_MESSAGE);

    }  
}

3 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西:

你需要检查你的输入,如果输入是一个整数然后显示成功消息,否则显示错误信息:

我认为您的代码应如下所示:

public static void main(String[] args) {
    while (true) {
        String radius = JOptionPane.showInputDialog(null, "Enter Radius", "Radius", JOptionPane.QUESTION_MESSAGE);
        if (radius.equals("#")) {
            break;
        } else {
            if (test(radius)) {
                JOptionPane.showMessageDialog(null, "the string you entered is: " + radius, "results", JOptionPane.PLAIN_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(null, "the string you entered is: " + radius, "results", JOptionPane.ERROR_MESSAGE);
            }
        }
    }

}

public static boolean test(String s) {
    try {
        Integer i = Integer.parseInt(s);
        return true;
    } catch (Exception e) {
        return false;
    }
}

<强> N.B

如果要退出,则需要使用特定字符串进行检查,例如#

修改

public static void main(String[] args) {
    while (true) {
        String radius = JOptionPane.showInputDialog(null, "Enter Radius", "Radius", JOptionPane.QUESTION_MESSAGE);
        System.out.println(radius.length());
        if (radius.equals("#")) {
            break;
        } else {
            if (test(radius, 10)) {
                if(Integer.parseInt(radius)<0){
                    JOptionPane.showMessageDialog(null, "Negative int: " + radius, "results", JOptionPane.ERROR_MESSAGE);
                }else{
                    JOptionPane.showMessageDialog(null, "the string you entered is: " + radius, "results", JOptionPane.PLAIN_MESSAGE);
                }

            } else {
                JOptionPane.showMessageDialog(null, "the string you entered is: " + radius, "results", JOptionPane.ERROR_MESSAGE);
            }
        }
    }

}

public static boolean test(String s, int radix) {
    Scanner sc = new Scanner(s.trim());
    if (!sc.hasNextInt(radix)) {
        return false;
    }
    sc.nextInt(radix);
    return !sc.hasNext();
}

您可以在此处详细了解:Determine if a String is an Integer in Java

希望这可以帮到你。

答案 1 :(得分:0)

第一个解决方案是Scanner你想要它的图形用户界面,所以想要使用JPanel?关键是Scanner的next()或hasNextInt()是空白标识,所以可以重复输入或测试,但是在JPanel中,如LAIDANI Youcef show http://alvinalexander.com/sites/default/files/users/user3/joptionpane-show-input-dialog-example-1.png 它只能输入一次。

答案 2 :(得分:0)

如果字符串不是可解析的整数,则Integer#parseInt(String s)会抛出未经检查的异常NumberFormatException。这就是你需要的。

fastcgi_pass