2011-12-10 15 views
-2

私は、配列のソート入力のヘルプを必要とします。ストーリーは次に候補者の投票数を入力するコードを作成しています(そのうちの5つです)。各候補の投票数を出力します。 -1が入力されたときに終了する必要があります。私はすべての並べ替えとスワップ関数を考え出し、実際の入力コードに問題があります。私はこれまでのところ正しいことではないが、それはあなたにアイデアを与えるかもしれない。配列のソート入力

import java.util.*; 

public class VoteCount { 

    public static void main(String[] args) { 
     //create empty array 
     int[] votes = new int[5]; 

     //input data 
     input(votes); 

    } 

    public static void input(int[] votes) 
    { 
     Scanner kybd = new Scanner(System.in); 
     System.out.println("Enter vote number of the candidate results: "); 
     int votecount = kybd.nextInt(); 

     while (votecount !=-1) 
     { 
      votes[votecount]++; 
      System.out.println("Candidate" + votes +"Has" +votecount + "votes");   
     } 

    } 
} 
+0

'votecount = kybd.nextInt();'あなたは終わりにもループ内であることを行う必要があります。 'votes [votecount] ++;'の代わりに 'votes [index ++] = votecount'を実行してください。 –

+0

出力はどのように表示されるべきですか?候補者=いいえ=投票数で投票数をソート – stacker

答えて

1

あなたがループ内でそれを変更することはありませんので、votecountが-1に等しくなることは決してないだろうということで無限ループの原因を作成しているように見えます。

あなたがする必要があるのは、コードをループ内で尋ねて記録する場所に移動することです。しかし、votes[votecount]++を実行する前に、ユーザが-1を入力しなかったことを確認してください。ArrayOutofBoundsExceptionが表示されるためです。だから永遠にループすることができます。ユーザーが-1を入力すると、ループがbreakになります。

0

は、私はこのようにそれを行うだろう:

import java.util.Scanner; 

public class VoteCount { 

    public static void main(String[] args) { 
     //create empty array 
     int[] votes = new int[5]; 
     //initialise with 0 
     for (int i=0; i<5; i++){ 
      votes[i] = 0; 
     } 

     //input data 
     input(votes); 

    } 

    public static void input(int[] votes) 
    { 
     System.out.println("Enter vote number of the candidate results: "); 
     Scanner kybd = new Scanner(System.in); 
     int votecount = kybd.nextInt(); 
     while (votecount !=-1) { 
      votes[votecount]++; 
      System.out.println("Candidate " + votecount +" Has " +votes[votecount] + " votes"); 
      System.out.println("Enter vote number of the candidate results: "); 
      votecount = kybd.nextInt(); 
     } 

    } 
} 

は今、あなたは、ユーザーが4を超えると-1の下に何も入力が許可されていない機能を追加する必要があり、そうでなければ、例外が発生します。がんばろう!ここで

+0

これは宿題のようです...これが当てはまる場合、OPにコードを投げても彼は学ばなくなります。また、ユーザーが-1を入力すると、コードはArrayOutofBoundsExceptionをスローします。 – npinti

+0

は今すぐに動作するはずです –

+0

投票する候補者の番号を入力するようにユーザーに尋ねるのを忘れました。そうであれば、ユーザーは空白のコンソールを持っています...混乱の原因になるかもしれません。 – npinti

0

は、コンソールから読み取るとvotes配列を埋めることができる方法です。

public static void main (String[] args){ 

    String line = null; 
    int val = 0; 
    BufferedReader is = new BufferedReader(new InputStreamReader(System.in)); 
    do{ 
     System.out.println("Usage: Enter votes. Enter -1 to exit"); 
     int voteNumber = 0; 
     while(voteNumber<5){ 
       try { 
       line = is.readLine(); 
       val = Integer.parseInt(line); 
       votes[voteNumber] = val; 
       voteNumber++; 
       } catch (NumberFormatException ex) { 
       System.err.println("Not a valid number: " + line); 
       System.out.println("Usage: Enter votes. Enter -1 to exit"); 
       } 
     } 
    }while(val != -1); 
} 
0

このコードを使用すると、無限ループを作成しています。

代わりに、あなたが書く必要があります:

votecount = kybd.nextInt(); // in the Loop and At End.. 

グルンは右..です