2016-03-02 238 views
0

我完成了一个程序,该程序是将数字设置为1至3999之间的数字,并将其更改为罗马数字,然后我将其工作,但必须将其分为两个班级,一个测试人员课程我将如何做到这一点?我知道这可能是一个非常简单的问题,但我似乎无法弄清楚如何将它们分成主类和测试者类。如何将一个班级分为两个班级

public static void main(String[] args)  
{ 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Welcome to integer to Roman numeral conversion program "); 
    System.out.println("------------------------------------------------------ "); 
    System.out.print("Please enter an integer in the range 1-3999 (both inclusive): "); 
    int number= scan.nextInt(); 
    String numberString=""; 
    if (number<=1||number >3999) 
    { 
     System.out.println("Sorry, the number is outside the range. Good bye!"); 
     System.exit(0); 
    } 
    switch ((number%10000)/1000) 
    { 
     case 1: numberString += "M"; 
      break; 
     case 2: numberString += "MM"; 
      break; 
     case 3: numberString += "MMM"; 
      break; 
    } 
    switch ((number%1000)/100) 
    { 
     case 1: numberString += "C"; 
      break; 
     case 2: numberString += "CC"; 
      break; 
     case 3: numberString += "CCC"; 
      break; 
     case 4: numberString += "CD"; 
      break; 
     case 5: numberString += "D"; 
       break; 
     case 6: numberString += "DC"; 
       break; 
     case 7: numberString += "DCC"; 
       break; 
     case 8: numberString += "DCCC"; 
      break; 
     case 9: numberString += "CM"; 
      break; 
    } 
    switch ((number%100)/10) 
    { 
     case 1: numberString += "X"; 
      break; 
     case 2: numberString += "XX"; 
      break; 
     case 3: numberString += "XXX"; 
      break; 
     case 4: numberString += "XL"; 
      break; 
     case 5: numberString += "L"; 
      break; 
     case 6: numberString += "LX"; 
      break; 
     case 7: numberString += "LXX"; 
      break; 
     case 8: numberString += "LXXX"; 
      break; 
     case 9: numberString += "XC"; 
      break; 
    } 
    switch (number%10) 
    { 
     case 1: numberString += "I"; 
      break; 
     case 2: numberString += "II"; 
      break; 
     case 3: numberString += "III"; 
      break; 
     case 4: numberString += "IV"; 
      break; 
     case 5: numberString += "V"; 
      break; 
     case 6: numberString += "VI"; 
      break; 
     case 7: numberString += "VII"; 
      break; 
     case 8: numberString += "VIII"; 
      break; 
     case 9: numberString += "IX"; 
      break; 
    } 

    System.out.println(number + " in Roman numerals is " + numberString); 
    System.out.println("Thanks for using my program. Good bye!"); 
    System.exit(0); 
} 
+0

你不需要通过而作出更多的类把重复的代码到 –

+0

你想一类新方法,其中包含实际的逻辑和另一个测试这个逻辑...我是对的吗?只是想拆分现有的代码.. –

+0

是的,我必须保持主类有程序,然后让测试者运行程序。 – Brandon

回答

0

正如@Vikrant Kashyap所指出的那样。您可以将其分解为测试类和转换类。我没有机会编译代码。让我知道这是否有效。

RomanNumeralsTest.java

public class RomanNumeralsTest 
{ 
    public static void main(String[] args)  
    { 
     Scanner scan = new Scanner(System.in); 
     RomanNumerals rn = new RomanNumerals(); 
     System.out.println("Welcome to integer to Roman numeral conversion program "); 
     System.out.println("------------------------------------------------------ "); 
     System.out.print("Please enter an integer in the range 1-3999 (both inclusive): "); 
     int number= scan.nextInt(); 
     if (number<=1||number >3999) 
     { 
      System.out.println("Sorry, the number is outside the range. Good bye!"); 
      System.exit(0); 
     } 

     System.out.println(number + " in Roman numerals is " + rn.convertToRomanNumeral(number)); 
     System.out.println("Thanks for using my program. Good bye!"); 
     System.exit(0); 
    } 

} 

RomanNumerals.java

public class RomanNumerals 
{ 
    public String convertToRomanNumeral(int number) 
    { 
     String numberString = ""; 
     switch ((number%10000)/1000) 
     { 
      case 1: numberString += "M"; 
       break; 
      case 2: numberString += "MM"; 
       break; 
      case 3: numberString += "MMM"; 
       break; 
     } 
     switch ((number%1000)/100) 
     { 
      case 1: numberString += "C"; 
       break; 
      case 2: numberString += "CC"; 
       break; 
      case 3: numberString += "CCC"; 
       break; 
      case 4: numberString += "CD"; 
       break; 
      case 5: numberString += "D"; 
        break; 
      case 6: numberString += "DC"; 
        break; 
      case 7: numberString += "DCC"; 
        break; 
      case 8: numberString += "DCCC"; 
       break; 
      case 9: numberString += "CM"; 
       break; 
     } 
     switch ((number%100)/10) 
     { 
      case 1: numberString += "X"; 
       break; 
      case 2: numberString += "XX"; 
       break; 
      case 3: numberString += "XXX"; 
       break; 
      case 4: numberString += "XL"; 
       break; 
      case 5: numberString += "L"; 
       break; 
      case 6: numberString += "LX"; 
       break; 
      case 7: numberString += "LXX"; 
       break; 
      case 8: numberString += "LXXX"; 
       break; 
      case 9: numberString += "XC"; 
       break; 
     } 
     switch (number%10) 
     { 
      case 1: numberString += "I"; 
       break; 
      case 2: numberString += "II"; 
       break; 
      case 3: numberString += "III"; 
       break; 
      case 4: numberString += "IV"; 
       break; 
      case 5: numberString += "V"; 
       break; 
      case 6: numberString += "VI"; 
       break; 
      case 7: numberString += "VII"; 
       break; 
      case 8: numberString += "VIII"; 
       break; 
      case 9: numberString += "IX"; 
       break; 
     } 
     return numberString; 
    }  
} 
+0

罗马数字会更好,因为我认为这是一个静态类。 –

+0

是的。我想这取决于任务。 – Yan

+0

我这样做了,但现在主要说它找不到符号 - 变量numberString – Brandon

相关问题