2016-10-20 13 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. メソッドは、kというパラメータを受け取ります。メソッドを呼び出すと、kが0に初期化されていて変更されないため、値0が渡されます。だから、これは私に尋ねなければならない - なぜそれが決して変化しない場合、kはパラメータですか?
  3. コードに構文エラーがあります。この行:int year[] = new year[10];は間違っています - それはint[] year = new int[10];と書かれていますが、これが修正されたときには重複する変数である全く新しい問題が作成されます。あなたはInteger.parseInt(...)はパラメータではない配列としてStringがかかるため、あなたが行うことができない整数としてyearを解析しようとするコードの後半でString year = JOptionPane.showInputDialog(...);
  4. :配列は、あなたは上記のStringとの競合を宣言しました。
  5. 変数名が短すぎて意味がありません。 r,k,iのような1文字の変数を持つ変数は、ほとんどの場合、良い考えではありません。一般に、変数に単一の文字名を使用することが許容されると考えられる唯一の時間は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... 
} 

ホープ、このことができます!

関連する問題