2016-10-20 90 views
-1

在我試圖插入數組之前,代碼爲年份輸入返回單獨的值,但是我寧願如果我可以輸入列表,然後顯示列表如果它是閏年。如果不是,它應該忽略它。我沒有使用JOptionPane的數組...實際上,我從來沒有使用過數組,因爲這是我使用java的第4周,所以我很不喜歡。但絕對願意接受批評和建議。我想變得更好。提前致謝。如何在JOptionPane中允許來自用戶的多個輸入

import javax.swing.JOptionPane;

公共類SimpleMath {

public static int printLeap(int r, int k){ 
    if((r % 4 == 0) && (r % 100 != 0) || (r % 400 == 0)){ 
    return r; 
    } 
    else if ((r % 4 != 0) && (r % 100 == 0) || (r % 400 != 0)); 
    return k; 
} 


public static void main(String[] args) { 


    while (true) { //while the statement is true (so it continues indefinitely until the break occurs). 

     String year = JOptionPane.showInputDialog("Enter input years to be tested, when done type End"); 
     int year[] = new year[10]; 
     for (int x=0; x<year.length; x++) 
     if ("End".equals(year)){ //if the user types End then the loop will break. it allows a string to be input for an int value 

      break; 
     } { 
       int r = Integer.parseInt(year); 

int k = 0; 
int i = printLeap(r, k); 
if (i == 0) { 
    break; // or System.out.println(""); 
} 
else 

    System.out.println("Leap years entered are: " + i + x);  


} 
} 
} 

}

+0

我建議從基礎開始,然後轉到GUI組件。 – ChiefTwoPencils

+0

爲什麼不接受逗號分隔的年份列表並使用['String.split(「,」)'](http://docs.oracle.com/javase/7/docs/api/java/lang/String。 html#split(java.lang.String))從那裏創建一個數組? –

回答

1

因此,讓我們用一些通用的代碼審查的項目開始:

  1. 的代碼沒有被格式化很好,這使得它難以閱讀。修正縮進對於讓其他人閱讀變得很長。
  2. printLeap方法接受您稱爲k的參數。當你調用你的方法時,你將它傳遞給值0,因爲你已經初始化了k爲0,它永遠不會改變。所以這迫使我問 - 爲什麼k一個參數,如果它永遠不會改變?
  3. 您的代碼中有語法錯誤。這行:int year[] = new year[10];是錯誤的 - 它應該寫成int[] year = new int[10];,但是當它被修復時,它會創建一個全新的問題,它是重複的變量。數組你聲明與上述String衝突:String year = JOptionPane.showInputDialog(...);
  4. 後來在你的代碼試圖解析year作爲一個整數,你不能這樣做,因爲Integer.parseInt(...)需要String作爲參數不是一個數組。
  5. 變量名稱太短,沒有意義。單個字符名稱的變量如r,k,i在大多數情況下不是一個好主意。一般來說,唯一可以接受的方式是使用單個字符名稱作爲變量,因爲它是一個for循環定義,如:for(int i=0; i<10; i++),因爲這是一種常見模式。

至於你的問題,目前還不完全清楚你真的在這裏問什麼。這聽起來像你想接受一個年的列表作爲輸入和輸出閏年的年份。

所以,我會幫助你開始通過提供以下代碼:

//Accept input from the user - a single String containing multiple years separated by commas. 
String input = JOptionPane.showInputDialog("Enter years to be tested (comma separated): "); 
//Split the String by commas and store the resulting individual years in an array 
String[] yearArray = input.split(","); 

//Process each year in the array 
for(String year: yearArray){ 
    int intYear = Integer.parseInt(year); 
    System.out.println("Here's the integer value: " + intYear); 
    //Do more logic here... 
} 

希望這有助於!

相關問題