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
是一个
字符串
,并且
in put
完成

输出数组将是这样的[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 回答