java - 如果输入了错误的类型作为参数,如何让我的方法返回特定值?

标签 java

我正在解决这个特定问题的最后一部分。下面的方法返回模拟时钟的时针和分针之间的角度(从时针到分针逆时针测量)。它工作正常,但无法让它与任意输入一起工作(特别是不正确的参数)。

例如;如果我将 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

如果解析字符串时发生错误,请将参数更改为字符串,并用trycatch括起来对于整数,它将返回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/

相关文章:

java - 多个数据源的Spring Boot测试配置

Java 将图像添加到 JPanel。为什么图像不显示?

java - 如何从Java中的数据库应用程序的jar文件创建exe文件?

java - Spark DataFrame 类的 union() 方法在哪里?

java - 如何使用Spring的@ExceptionHandler实现自定义错误字符串?

java - 使用 JavaMail 访问 Mailinator POP3

java - Windows 10 中的 Kafka 设置

java - 在二维矩阵中找到最左边和最右边角之间的最短路径

java - IllegalArgumentException : Document base\. 元数据\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 不存在或不是可读目录

Java正则表达式验证用户名长度