gpt4 book ai didi

java - 如何在 main 方法中测试我的程序?

转载 作者:行者123 更新时间:2023-11-30 03:39:35 25 4
gpt4 key购买 nike

对于你们中的许多人来说,这可能听起来像是一个愚蠢的问题,但我是一名新学生,我正在努力学习。该程序接受用户输入的罗马数字并将其转换为十进制值。我正在尝试测试这个程序,但我不知道我必须在我的主要方法中做什么才能做到这一点。我有其他的计算方法,但现在我应该如何测试它呢?让我向您展示我所拥有的:

public class RomanNumeralConverter {  

public String getUserInput() {
Scanner numberInput = new Scanner (System.in);
System.out.print("Enter a roman numeral in uppercase: ");
String userInput = numberInput.next();
numberInput.close();
return userInput;
}

public static void romanToDecimal(String userInput) {
int decimal = 0;
int lastNumber = 0;
userInput = userInput.toUpperCase();
for (int x = userInput.length() - 1; x >= 0 ; x--) {
char convertToDecimal = userInput.charAt(x);

switch (convertToDecimal) {
case 'M':
decimal = processDecimal(1000, lastNumber, decimal);
lastNumber = 1000;
break;

case 'D':
decimal = processDecimal(500, lastNumber, decimal);
lastNumber = 500;
break;

case 'C':
decimal = processDecimal(100, lastNumber, decimal);
lastNumber = 100;
break;

case 'L':
decimal = processDecimal(50, lastNumber, decimal);
lastNumber = 50;
break;

case 'X':
decimal = processDecimal(10, lastNumber, decimal);
lastNumber = 10;
break;

case 'V':
decimal = processDecimal(5, lastNumber, decimal);
lastNumber = 5;
break;

case 'I':
decimal = processDecimal(1, lastNumber, decimal);
lastNumber = 1;
break;
}
}
System.out.println(decimal);
}

public static int processDecimal(int decimal, int lastNumber, int lastDecimal) {
if (lastNumber > decimal) {
return lastDecimal - decimal;
} else {
return lastDecimal + decimal;
}
}


public static void main(String[] args) {

romanToDecimal(getUserInput);

}
}

您可以看到我尝试将 getUserInput 插入 romanToDecimal 但我知道主方法中没有这些参数,而且我也没有甚至认为 Java 可以让我做到这一点。但是,我认为这代表了我正在尝试做的事情。我真正想做的是:

System.out.println("The number you entered is " + userInput
System.out.println("The converted number is " + romanToDecimal

也许我应该把它放在一个单独的方法中?

最佳答案

您需要进行一些更改:

  • 如果您要从 main 调用 getUserInput 方法,则需要将其设置为静态,或者创建一个实例类(class)。我建议将其设为静态方法。
  • 目前,您的 romanToDecimal 方法打印出结果 - 但如果它返回结果,它会更整洁(在我看来),因此您可以在
  • romanToDecimal(getUserInput) 中,您尝试将 getUserInput 当作变量来使用,但它是一个方法。

getUserInput 更改为 static 并将 romanToDecimal 更改为返回 String 而不是打印它后,您的 main 方法可能如下所示:

public static void main(String[] args) {
String input = getUserInput();
String result = romanToDecimal(input);
System.out.println("The number you entered is " + input);
System.out.println("The converted number is " + result);
}

作为一个程序就可以了。一旦您将 romanToDecimal 作为返回结果的方法,您还可以轻松地为其编写单元测试,其中输入被硬编码到测试中,并且您可以轻松地为它编写单元测试。检查了结果。例如:

public void test5() {
String result = RomanNumeralConverter.romanToDecimal("V");
Assert.assertEquals(5, result);
}

...还有更多您能想到的测试。 (根据您选择的单元测试框架,您也许能够编写一段测试代码,并将输入和预期结果非常紧凑地指定为参数。)

关于java - 如何在 main 方法中测试我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079413/

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