2017-10-16 8 views
0

配列の中にint値が含まれているところのプログラムがあります。 int値が10の倍数であるかどうかに応じて、配列内の配列を返します。このプログラムは問題ありませんが、配列内にint値がないかどうかをチェックするにはどうすればよいですか?私はエラーが発生しました(スレッド "main"の例外java.lang.ArrayIndexOutOfBoundsException:0)ありがとう!値のないjava配列を返します

public class Test1{ 
    public static void main(String[] args){ 
     int[] nums = {}; 
     int[] array = tenRun(nums); 
     int i; 
     for(i = 0; i < array.length - 1; i++) 
     System.out.print(array[i] + ", "); 
     System.out.println(array[i]); 
    } 

    public static int[] tenRun(int[] nums) { 
     int current; 
     int i = 0; 

     while(i < nums.length && nums[i] % 10 != 0) 
     i++; 
     if(i >= nums.length) 
     return nums; 

     current = nums[i]; 
     i++; 

     while(i < nums.length) { 
     if(nums[i] % 10 == 0) 
      current = nums[i]; 
     else 
      nums[i] = current; 
     i++; 
     }              
     return nums; 
    } 
} 

答えて

1

まず、{}で配列を宣言するスタイルは良くありません。

誰もがtenRun([] NUMSをint型)を呼び出すことができれば、その後、私はおそらくそれがこのような空またはnullであるかどうかを確認したい:

if(nums == null || nums.length == 0) 

しかし、あなたは、あなたのコードをしたときに実行したいので、それがnullではありませんし、それが空でないとき、このようにそれを実行します。

if(nums != null && nums.length > 0) { 
    //code here 
} 

あなたのメインのループは次のようになりますのために:

//get rid of int i; 
if(array.length > 0) { 
    System.out.println("{"); 
    for(int i = 0; i < array.length - 1; i++) { 
     System.out.print(array[i] + ", "); 
    } 
    System.out.println("}" + array[i]); 
} else { 
    System.out.println("{}"); 
} 
+0

を返したら、あなたは、このエラーを回避することができるように、私はまだそれのまわりで私の頭を取得することはできませんチェックが含まれ、私は私が自分自身のためにそれを複雑に上かもしれないと思います。 {8、40、7、9、30、6、4、40、1、9}の配列を持っている場合、期待通りに8,40,40,40,30,30,30,40,40,40を返します。誰かが配列をブランク{}のままにしておくと、例外がスローされます。 –

+0

@SombraDevon私はそれを理解しました。あなたはあなたの手にフェンスポストの問題があります。ループの最後に到達します。ここでi = array.length -1ですが、forループがまだiをインクリメントしようとするため、配列[array.length]を出力しようとします。 – Meepo

+0

申し訳ありませんが、私は私の答えを更新しました、今すぐ動作するはずです。 – Meepo

0

配列の長さをチェックしないで配列要素を印刷しているメインの最後のコードで、配列要素を印刷またはアクセスする前にチェックします。 tenRunはそれの配列のチェックサイズ

if(array.length > 0) 
{ int i; 
    for(i = 0; i < array.length - 1; i++) 
     System.out.print(array[i] + ", "); 
} 
else 
{ 
    System.out.println("Received empty array"); 
} 
関連する問題