0
 import java.util.Scanner;
 public class Sal {

public static void main (String args []){
    Scanner s=new Scanner(System.in);
    String area[]=new String [10];
    int pincode[]=new int [10];
    int search;
    int chk=0;
    int p=0;
    System.out.println("Enter 10 areas");
    for (int i=0;i<=9;i++)
        area[i]=s.next();
    System.out.println("Enter 10 pincodes");
    for (int l=0;l<=9;l++)
        pincode[l]=s.nextInt();
    System.out.println("Enter Search");
    search=s.nextInt();
    for (int j=0;j<=9;j++){
        if(search == pincode[j] ){
            chk=1;
            j=p;
            break;
        }
    }
    if(chk==1){
        System.out.println("Search Found "+"Pincode : "+area[p] );
    }else{
        System.out.println("Search not Found");
    }

}

}

私はプログラムの最初の部分を正しく理解しているようです。つまり、検索が見つかったかどうかを教えてくれます。しかし、その後、ピンコードとして何を入力しても、最初に入力されたエリアが検索結果として取得されます。10 のエリアに入るとします。たとえば、ピンコードです。

q - 1
w - 2
e - 3
r - 4 
t - 5 
y - 6
u - 7
i - 8
o - 9
p - 0

"4" 出力を取得するときに検索を入力すると、次のようになります。

Search Found Pincode : q
4

1 に答える 1

3

この行は間違っています:

j=p;

に変更し p=jます:

   if(search == pincode[j] ){
        chk=1;
        p = j; // you want to save index
        break;
    }

あなたの問題とは関係ありませんが、に変更s.next()してくださいs.nextLine()

next()現在の単語を取得し、同じ行の次の単語に移動します。たとえば、入力が次のような場合:

入力は 文字列 で
あり 、 入力は 完全です




出力配列は次のようになります[in,put,is,a,string,and,the,in,put,complete]

ただしnextLine()、行全体を取得して次の行に移動します。

[in put,is a, string, and the, in put, complete,....]

于 2013-08-24T11:17:12.413 に答える