gpt4 book ai didi

java - java中如何处理不同类型的输入

转载 作者:行者123 更新时间:2023-12-01 17:46:20 24 4
gpt4 key购买 nike

在这个问题

Write a program which demonstrates method overloading having the following method:

1.Interest_rate*(int s, int a, float d)
2.Interest_rate*(float s, int a, float d)
3.Interest_rate*(int s, int a, double d)

and these are the test cases which are based on the input format of the method:

Test Case 1

1000 66 12.1f

Test Case 2

1000f 45 12.1f

那么我如何创建主函数,其中输入将自动触发所需的函数,如测试用例1,它应该调用1.Interest_rate>测试用例 2 应调用 2.Interest_rate 等等

最佳答案

我建议使用正则表达式匹配器对输入案例进行排序。

an integer can be detected as -?\d+

a float like in your examples as -?\d+(\.\d+)?f

a double as -?\d+\.\d+

whitspace as \s one or more whitespaces \s+

也许对 Java Regex 的研究可能会有所帮助。

接下来你必须了解什么是方法重载。

经过一些研究,您会发现它基本上是您可以创建多个具有相同名称但其他输入参数类型的方法。

如果您已经完全了解了上面的主题(以及扫描仪的工作原理),那么您就可以开始实现。

对于您已完成所有这些操作但仍然陷入困境的情况,以下问题的实现可能会对您有所帮助。但一如既往:只使用你完全理解的代码,否则他会反击。

import java.util.Scanner;

public class ScannerWithDifferentInputs {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String input = sc.nextLine();
if (input.matches("-?\\d+\\s+\\d+\\s+\\d+(\\.\\d+)?f")) {
input.replace("f", "");
String[] parts = input.split("\\s+");
interestRate(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Float.parseFloat(parts[2]));
} else if (input.matches("-?\\d+(\\.\\d+)?f\\s+\\d+\\s+\\d+(\\.\\d+)?f")) {
input.replace("f", "");
String[] parts = input.split("\\s+");
interestRate(Float.parseFloat(parts[0]), Integer.parseInt(parts[1]), Float.parseFloat(parts[2]));
} else if (input.matches("-?\\d+\\s+\\d+\\s+\\d+\\.\\d+")) {
String[] parts = input.split("\\s+");
interestRate(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Double.parseDouble(parts[2]));
} else if (input.equals("q")) {
System.out.println("exit");
break;
} else {
System.out.println("Invalid Input");
}
}
}

static void interestRate(int i1, int i2, float f) {
System.out.println("case int, int, float");
System.out.println(i1 + " " + i2 + " " + f);
}

static void interestRate(float f1, int i, float f2) {
System.out.println("case float, int, float");
System.out.println(f1 + " " + i + " " + f2);
}

static void interestRate(int i1, int i2, double d) {
System.out.println("case int, int, double");
System.out.println(i1 + " " + i2 + " " + d);
}

}

关于java - java中如何处理不同类型的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60862101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com