0
package masivi;

import java.util.Scanner;
public class Masivi {
    public static void main (String args[]){
    int atzimes[][]={{50,60,55,67,73},
                     {62,65,71,70,81},
                     {72,66,77,80,69}};

    int a = 0;
    int b = 0;
   int Y = 0;
       int D = 0;    
     Scanner scan = new Scanner(System.in);
     System.out.println("Ievadiet skaitli kuru velaties parbaudit:");
     int x = scan.nextInt();

     while (Y<16){
     if (atzimes[a][b] == x) System.out.println("Skaitlis "+x+" atrodas saja masiva.");
     Y=Y+1;
     if (atzimes[a][b] == x) break;
     b=b+1;
     if (b==4) a=a+1;
     if (b==4) b=0;
      if (a==2) ;

}
  if (atzimes[a][b] == x) System.out.println("" );
  else System.out.println("Skaitlis "+x+" neatrodas masiva." );

    }
}

最後の値 (69) をチェックすると範囲外になり、その理由がわかりません。ループが終了する値を変更しようとしましたが、現在はアイデアがありません。x の値を要求し、配列内にあるかどうかを確認します。

4

3 に答える 3

1

ネストされた for ループを使用してループをやり直してください。入れ子になった for ループは見栄えが良く、コードを操作しやすくなります。ミスも少なくなります。

for(int i=0; i<6;i++){  
  for(int j=0; j<4; j++){   
      atzimes[i][j];  //do stuff here
  }
}
于 2013-10-27T21:40:31.960 に答える
0

アラト境界の終わりに到達したときaと同じ方法でリセットするのを忘れました。b

変化する

  if (a==2) ;

  if (a==2) a=0;
于 2013-10-27T21:38:51.957 に答える