2015-11-06 14 views
-4

我是java的初學者,我們被要求創建一個讀取20到99之間整數的程序,並將這些數字寫成單詞。如果編號大於99或小於20,程序將報告超出範圍的錯誤。當用戶輸入-1時程序停止。在20-99之間寫數字到java中的單詞

到目前爲止,我有這樣的代碼,我不知道,如果沒有什麼是錯的:

import java.util.Scanner; 
 
public class Question1 { 
 

 
    public static void numberToWord(int num, String val) { 
 
      String ones[] = {" ", "ONE", "TWO", "THREE", " FOUR", " FIVE", " SIX", " SEVEN", " EIGHT", " NINE", " TEN", " ELEVEN", " TWELVE", " THIRTEEN", " FOURTEEN", " FIFTEEN", " SIXTEEN", " SEVENTEEN", " EIGHTEEN", " NINETEEN" 
 
      }; 
 
      String tens[] = {" ", " ", "TWENTY", "THIRTY", "FOURTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY"}; 
 
      if (num > 19) { 
 
       System.out.print(tens[num/10] + " " + ones[num % 10]); 
 
      } else { 
 
       System.out.print(ones[num]); 
 
      } 
 
      if (num > 0) { 
 
       System.out.println(val); 
 
      } 
 
    } 
 

 
    public static void main(String[] args) { 
 
     int number = 0; 
 
     
 
     Scanner scanner = new Scanner(System.in); 
 
     System.out.print("Please type a number between 20 and 99 OR type -1 to end: "); 
 
     number = scanner.nextInt(); 
 
      
 
     while(number!=-1){ 
 
      if(number>=20 && number<=99){ 
 
       numberToWord((number % 100), " "); 
 
      } 
 
      else { 
 
       System.out.print("Out of bounds. Try Again"); 
 
      } 
 
       System.out.print("\nPlease type a number between 20 and 99 OR type -1 to end: "); 
 
       number = scanner.nextInt(); 
 
     } 
 
    } 
 
}

+0

如果它運行沒有錯誤 - 你的代碼是好的)。有任何Java錯誤? – yeg

+0

這與javascript無關。另外,你怎麼能不知道沒有什麼是錯的?你有沒有嘗試過實際運行你的代碼? – redFIVE

回答

0

你的代碼的工作,只有在單詞「四十」的小錯字(應是「FORTY」)。我還將從陣列onestens中的字符串中刪除不必要的空格。您在此處插入一個空格:

System.out.print(tens[num/10] + " " + ones[num % 10]); 

因此數組中的空格字符是多餘的。

String ones[] = { 
    "", "ONE", "TWO", "THREE", " FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", 
    "ELEVEN", "TWELVE", " THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" 
}; 
String tens[] = { 
    " ", " ", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY" 
}; 

編輯:如果我是做那項任務,我可能會寫這樣的程序:

import java.util.Scanner; 

public class Question1 { 

    private static String ones[] = { 
      "", "ONE", "TWO", "THREE", " FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", 
      "ELEVEN", "TWELVE", " THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" 
    }; 

    private static String tens[] = { 
      " ", " ", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY" 
    }; 

    public static void numberToWord(int num, String val) { 
     if (num > 19) 
      System.out.print(tens[num/10] + " " + ones[num % 10]); 
     else 
      System.out.print(ones[num]); 

     if (num > 0) 
      System.out.println(val); 
    } 

    public static void main(String[] args) { 
     int number; 
     Scanner scanner = new Scanner(System.in); 

     while (true) { 
      System.out.print("\nPlease type a number between 20 and 99 OR type -1 to end: "); 
      number = scanner.nextInt(); 

      if (number == -1) 
       break; // Leave the loop 

      if (number >= 20 && number <= 99) 
       numberToWord(number, " "); 
      else 
       System.out.print("Out of bounds. Try Again"); 
     } 
    } 

} 

但只有在比較你的解決方案次要代碼風格的改進。

祝你好運學習Java! :)

相關問題