Java float 范围限制
Java float Range Limiting
我目前正在完成一项任务,并且在大多数情况下,我有一个工作程序。我遇到的问题是为这个程序创建一个条件,因为不幸的是,我需要使用 float 数据类型。作业要求我有一个接口和多个 类 设置用于三种不同的形状。其中之一,是圈子。对于圆的输入,它需要一个半径和一个角度(仅用于扇区),它会计算整个圆的周长和面积以及扇区的周长和面积。我需要圆扇区的角度大于 0 且小于 360 度。半径也必须大于0.
这是我到目前为止的错误检查:
Scanner userInput = new Scanner(System.in);
System.out.print("\nPlease input the angle of a circle sector: ");
while (!userInput.hasNextFloat())
{
System.out.print("Error. Incorrect input. Please enter a number: ");
userInput.next();
}
float circleAngle = userInput.nextFloat();
while (circleAngle > 0 && circleAngle < 360)
{
System.out.print("You have an invalid entry.");
System.out.print("Please input an angle greater than 0 and less than 360:");
circleAngle = userInput.nextFloat();
}
System.out.print("\nPlease input the radius of the circle Sector: ");
while (!userInput.hasNextFloat())
{
System.out.print("Error. Incorrect input. Please enter a number: ");
userInput.next();
}
float circleRadius = userInput.nextFloat();
Circle myCircle = new Circle(circleAngle, circleRadius);
myCircle.setPerimeter();
myCircle.setArea();
myCircle.setSectorArea();
myCircle.setSectorPerimeter();
System.out.println("Whole Circle perimeter: "+myCircle.getPerimeter());
System.out.println("Whole Circle Area: "+myCircle.getArea());
System.out.println("Circle Sector perimeter: "+myCircle.getSectorPerimeter());
System.out.println("Circle Sector Area: "+myCircle.getSectorArea());
如您所见,我在限制浮点输入范围方面运气不佳。任何帮助将不胜感激。
经过一番研究。我发现我可以放置一个 while 语句,在上面的代码中对先前的 userInput 强制条件,例如 circleAngle。之后,我想出了以下问题的解决方案:
while (circleAngle <= 0 || circleAngle >= 360)
{
System.out.print("You have an invalid entry.");
System.out.print("Please input an angle greater than 0 and less than 360:");
circleAngle = userInput.nextFloat();
}
这让我可以循环输入,直到给出有效值。我计划在其余代码中添加更多内容。
感谢所有帮助过的人。
我目前正在完成一项任务,并且在大多数情况下,我有一个工作程序。我遇到的问题是为这个程序创建一个条件,因为不幸的是,我需要使用 float 数据类型。作业要求我有一个接口和多个 类 设置用于三种不同的形状。其中之一,是圈子。对于圆的输入,它需要一个半径和一个角度(仅用于扇区),它会计算整个圆的周长和面积以及扇区的周长和面积。我需要圆扇区的角度大于 0 且小于 360 度。半径也必须大于0.
这是我到目前为止的错误检查:
Scanner userInput = new Scanner(System.in);
System.out.print("\nPlease input the angle of a circle sector: ");
while (!userInput.hasNextFloat())
{
System.out.print("Error. Incorrect input. Please enter a number: ");
userInput.next();
}
float circleAngle = userInput.nextFloat();
while (circleAngle > 0 && circleAngle < 360)
{
System.out.print("You have an invalid entry.");
System.out.print("Please input an angle greater than 0 and less than 360:");
circleAngle = userInput.nextFloat();
}
System.out.print("\nPlease input the radius of the circle Sector: ");
while (!userInput.hasNextFloat())
{
System.out.print("Error. Incorrect input. Please enter a number: ");
userInput.next();
}
float circleRadius = userInput.nextFloat();
Circle myCircle = new Circle(circleAngle, circleRadius);
myCircle.setPerimeter();
myCircle.setArea();
myCircle.setSectorArea();
myCircle.setSectorPerimeter();
System.out.println("Whole Circle perimeter: "+myCircle.getPerimeter());
System.out.println("Whole Circle Area: "+myCircle.getArea());
System.out.println("Circle Sector perimeter: "+myCircle.getSectorPerimeter());
System.out.println("Circle Sector Area: "+myCircle.getSectorArea());
如您所见,我在限制浮点输入范围方面运气不佳。任何帮助将不胜感激。
经过一番研究。我发现我可以放置一个 while 语句,在上面的代码中对先前的 userInput 强制条件,例如 circleAngle。之后,我想出了以下问题的解决方案:
while (circleAngle <= 0 || circleAngle >= 360)
{
System.out.print("You have an invalid entry.");
System.out.print("Please input an angle greater than 0 and less than 360:");
circleAngle = userInput.nextFloat();
}
这让我可以循环输入,直到给出有效值。我计划在其余代码中添加更多内容。
感谢所有帮助过的人。