2013-08-24 4 views
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"); 
    } 

} 

} 

Кажется, что я получаю первую часть программы справа, то есть она сообщает мне, найден ли поиск или не найден. Но после этого, независимо от того, что я вводил в качестве pincode, я получаю первую введенную область в качестве результата поиска. Предположим, я вхожу в 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 

ответ

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,....]

Смежные вопросы