数组输出中的逻辑错误......?

时间:2013-08-24 11:03:16

标签: java arrays search

 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个区域 - pincodes,比如说

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

1 个答案:

答案 0 :(得分: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
  是一个   字符串
  和   在put   完整

输出数组将类似于此[in,put,is,a,string,and,the,in,put,complete]

但是nextLine()将获得整行并转到下一行。

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