我要从用户获得整数半径,然后显示圆的面积和周长。如果用户输入负整数或除整数(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);
}
}
答案 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