我正在解决这个特定问题的最后一部分。下面的方法返回模拟时钟的时针和分针之间的角度(从时针到分针逆时针测量)。它工作正常,但无法让它与任意输入一起工作(特别是不正确的参数)。
例如;如果我将 27.227272727 放入秒列中(错误的类型),我希望它返回零。
mport java.lang.Math;
/*
@author Joseph Adamson
*/
public class W1_E3_b{
/**
* @param hours
* @param minutes
* @param seconds
* @return int value representing degrees
*/
public static int timeToAngle(int hours, int minutes, int seconds){
int hour = hours % 12;
int minute = minutes % 60;
int second = seconds % 60;
double hAngle = 0.5 * (60 * hour + minutes);
double mAngle = 0.1 * (6 * minute + second);
double value = (hAngle - mAngle);
int angle = (int)value;
return 360 - Math.abs(Math.min(angle, 360 - angle));
}
public static void main(String[]args){
System.out.println(timeToAngle(13, 05, 27.272727272727));
}
}
如果我现在尝试该特定输入,我会收到错误消息:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method timeToAngle(int, int, int) in the type W1_E3_b is not applicable for the arguments (int, int, double)
at W1_E3_b.main(W1_E3_b.java:24)
如果不使用条件或循环而得到错误的类型,如何让它返回 0?
最佳答案
WITHOUT using conditionals or loops
如果解析字符串时发生错误,请将参数更改为字符串,并用try
catch
括起来对于整数,它将返回0
。如果参数中的硬编码输入不正确,程序将无法运行。
public static int timeToAngle(String hours, String minutes, String seconds){
try {
int hour = Integer.parseInt(hours) % 12;
int minute = Integer.parseInt(minutes) % 60;
int second = Integer.parseInt(seconds) % 60;
double hAngle = 0.5 * (60 * hour + Integer.parseInt(minutes));
double mAngle = 0.1 * (6 * minute + second);
double value = (hAngle - mAngle);
int angle = (int) value;
return 360 - Math.abs(Math.min(angle, 360 - angle));
} catch (Exception ignored) {
return 0;
}
}
not allowed to change the parameters
在将值分配给参数时,将输入包围在 try
catch
中。
示例:
try {
//int hour = Integer.parseInt(args[0]);
//int min = Integer.parseInt(args[1]);
//int seconds = Integer.parseInt(args[2]);
int hour = Integer.parseInt(scanner.nextLine());
int min = Integer.parseInt(scanner.nextLine());
int seconds = Integer.parseInt(scanner.nextLine());
int angle = W1_E3_b.timeToAngle(hour, min, seconds);
System.out.println(angle);
} catch (Exception ignored) {
int angle = 0;
System.out.println(angle);
}
关于java - 如果输入了错误的类型作为参数,如何让我的方法返回特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248570/