2016-03-02 240 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

相關問題