我的程序接受我输入的任何数字甚至100万>。 但我只想让用户输入0到180度之间的角度和输出 正弦,余弦和该角度的正切
这是我的计划:
import java.util.Scanner;
import java.text.DecimalFormat;
public class Mathematics
{
public static void main(String args[])
{
System.out.println("Enter an Angle ");
Scanner data = new Scanner(System.in);
int x;
x=data.nextInt();
double sinx = Math.sin( Math.toRadians(x) );
double cosx = Math.cos( Math.toRadians(x) );
double tanx = Math.tan( Math.toRadians(x) );
DecimalFormat format = new DecimalFormat("0.##");
System.out.println("Sine of a circle is " + format.format(sinx));
System.out.println("cosine of a circle is " + format.format(cosx));
System.out.println("tangent of a circle is " + format.format(tanx));
}
}
答案 0 :(得分:3)
将此代码放在x=data.nextInt();
if( x < 0 || x > 180 )
{
throw new Exception("You have entered an invalid value");
}
如果用户输入的数字超出范围[0,180],这将导致程序崩溃。 如果您希望允许用户再次尝试,您需要将程序放入循环中,如下所示:
do
{
System.out.print("Enter a value in [0, 180]: ");
x = data.nextInt();
} while(x < 0 || x > 180);
此循环将继续,直到用户输入所需的值。
答案 1 :(得分:2)
而不是
x = data.nextInt();
写
do {
x = data.nextInt();
if (x < 0 || x > 180) {
System.out.println("Please enter number between 0-180");
}
} while (x < 0 || x > 180);
答案 2 :(得分:1)
将问题放在循环中。当用户输入超出范围的值时,打印错误消息并请求其他值。当输入的值为OK时,然后可以退出循环。最好使用函数来使事物更具可读性:
public static int askForInt(String question, String error, int min, int max) {
while (true) {
System.out.print(question + " (an integer between " + min + " and " + max + "): ");
int read = new Scanner(System.in).nextInt();
if (read >= min && read <= max) {
return read;
} else {
System.out.println(error + " " + in + " is not a valid input. Try again.");
}
}
}
这样打电话:x = askForInt("The angle", "Invalid angle", 0, 180);