因此,我需要有关此代码的帮助。此代码将使用户输入一个双精度值,例如double radius。并计算圆的面积和周长。但是我需要检查半径是否正确,半径是否为负,以及用户是否输入了字符或字符串。因此,如果用户输入34.5gd,则代码应输出“无效的输入,请重试”,并使用循环再次输入该值。
我可以得到负数部分,并使用JOptionPane获得一个对话框,提示“无效的输入,请重试”,但是我无法检查输入的字符或字符串。
此代码用于驱动程序类
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
public class CircleValidationApp1
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
String line;
Scanner input = new Scanner (System.in);
System.out.println("Enter the radius");
Circle obj = new Circle();
NegativeDoubleException obj1 = new NegativeDoubleException();
line = input.next();
/*line = input.nextDouble();
obj.getradius(line);
obj.area();
obj.perimeter();*/
obj1.Checkradius(line);
if(obj1.Checkradius(line)==true)
{
System.out.println("valid input");
}
else
{
JOptionPane.showMessageDialog(frame, "Error, Please try again");
line = input.next();
}
input.close();
}
}
此类用于计算面积和周长
public class Circle {
double radius;
double area;
double perimeter;
public Circle() {
}
public double setradius(double r)
{
this.radius=r;
return radius;
}
public void getradius(double r)
{
setradius(r);
}
public void area()
{
area=3.14*radius*radius;
System.out.println("The area is:"+area);
}
public void perimeter()
{
perimeter=2*3.14*radius;
System.out.println("The perimeter is:"+perimeter);
}
}
此类处理异常和输入检查。
import javax.swing.JFrame;
public class NegativeDoubleException
{
Double radius;
String line;
Boolean flag = radius instanceof Double;
Circle obj = new Circle();
JFrame frame = new JFrame();
public NegativeDoubleException()
{
}
public void getvalue(String r)
{
r=this.line;
}
public void setvalue(String r)
{
getvalue(r);
}
public Boolean Checkradius(String r)
{
Boolean flag = false;
try
{
radius = Double.parseDouble(line);
flag = true;
}catch( NumberFormatException e)
{
flag = false;
}
return flag;
}
}
答案 0 :(得分:0)
这很容易,您可以将用户希望输入的代码括起来 与try ... catch语句 像这样
my_project_name.settings.prod
,当发生任何异常时,它将给出无效的输入消息,您可以关闭该消息并编写新的raduis,而不会导致程序崩溃
答案 1 :(得分:0)
第一个问题:,您必须使变量行加倍而不是String,并且在半径的setter和getters方法中,使setter加倍,并且它必须为空
并且吸气剂必须是双倍的,并且在吸气剂中您将编写return radius
然后您将进行以下更改
public class Circle2 {
double radius;
double area ;
double perimeter;
public void setradius(double r)
{
this.radius=r;
}
public double getradius(){
return radius;
}
public void perimeter()
{
System.out.println(2*3.14*radius);
}
public void area(){
area = Math.PI*radius*radius;
System.out.println(area);
}
}
注意:我在数学类中使用pi方法来获得更准确的结果Math.PI
第二秒::我对您的主班做了一些修改
public class mainc {
public static void main(String[] args) throws IOException {
double l;
Circle2 obj = new Circle2();
Scanner s;
s = new Scanner(System.in);
l = s.nextDouble();
obj.setradius(l);
obj.perimeter();
obj.area();
如果有人未输入数字则作例外处理,您将通过尝试捕获将主代码中的所有代码括起来 你会做到的
public class mainc {
public static void main(String[] args) throws IOException {
double l;
Circle2 obj = new Circle2();
Scanner s;
try{
s = new Scanner(System.in);
l = s.nextDouble();
obj.setradius(l);
obj.perimeter();
obj.area();
}catch(Exception e){
System.out.println(e);
System.out.println("enter a number");
s = new Scanner(System.in);
l = s.nextDouble();
}
}
}
我们添加了s = new Scanner(System.in);和l = s.nextDouble();再次是因为如果发生异常,它将继续执行该操作并且不会关闭