2017-01-14 3 views
0

Arrays.sort()メソッドを使用して整数の配列をソートしようとしています。このメソッドを呼び出した後、配列の要素は、以下Array.sort()関数を適用した後、配列要素が0になる

0になってきていることは私のコードである

import java.util.Arrays; 
import java.util.Scanner; 

public class WillMuggerWin { 

    public static void main(String ar[]){ 
    int t,n=10,m=5,sum=0,flag=0; 
    int notes[]=new int[20]; 

    Scanner s=new Scanner(System.in); 
    t=s.nextInt(); 
    for(int i=0;i<t;i++){ 
     n=s.nextInt(); 
     m=s.nextInt(); 
     int temp=m; 
     // System.out.println("m:"+m+"n:"+n); 
     for(int j=0;j<n;j++){ 
      notes[j]=s.nextInt(); 

     } 
     System.out.println("note:"+notes[0]+" "+notes[1]+" "+notes[2]); 
     Arrays.sort(notes); 
     System.out.println("note:"+notes[0]+" "+notes[1]+" "+notes[2]); 
     //System.out.println("note1"+notes[0]); 
     for(int k=n-1;k>=0;k--){ 
      //System.out.println("notes "+notes[k]); 
      if(notes[k]<=temp){ 
       sum=sum+notes[k]; 
       System.out.println("sum: "+sum); 
       temp=temp-sum; 
       if(temp==0){ 
        flag=1; 
        break; 
       } 
      } 
     } 
     if(flag==1) 
     System.out.println("Yes"); 
     else 
      System.out.println("No"); 
     flag=0; 
     sum=0; 
    } 
    } 
} 

入力:

出力:

注:1 1 1
注記:0 0 0
合計:0
合計:0
合計:0
ません

私のコードが間違っていますか?

+1

このコードではどのような問題がありますか? –

+1

Arrays.sort(ノート)を使用した後、notes配列のすべての要素がゼロになります。 –

答えて

2

あなたの配列が唯一の3つの要素を持っていない、それははるかに長いので、この線のだ:

int notes[] = new int[20]; 

あなたは、問題の原因を確認したい場合は、次の行を追加します。

System.out.println(Arrays.toString(notes)); 
をあなたの最初の前に

System.out.println("note:"+notes[0]+" "+notes[1]+" "+notes[2]); 

ライン、あなたは配列全体が表示されます。

[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

あなたは、ソート後の最初の3ヶ所に0 Sを参照してください、なぜその配列はまた、それらの1秒後0秒の多くが含まれているので、これは、あります。

したがって、sortメソッドが予期された動作をしています。

+0

ああ!素晴らしい今、私は助けてくれてありがとう@RO_engineer –

関連する問題