2016-01-14 2 views
-3
class Solution { 
    public static void main (String[] argv) { 
     Scanner in = new Scanner(System.in); 
     int  n = in.nextInt(); 
     String[] name = new String[n]; 
     String[] num = new String[n]; 
     String s; 
     String v; 
     int  flag = 0; 

     for (int i = 0; i < n; i++) { 
      name[i] = in.next(); 
      num[i] = in.next(); 
     } 

     while (in.hasNext()) { 
      s = in.next();    // query 
      for (int i = 0; i < n; i++) { 
       flag = 1; 
       if (s.equals(name[i])) { 
        System.out.println(name[i] + "=" + num[i]); 
        flag = 1; 
       } else { 
        flag = 0; 
       } 
      } 
      if (flag == 0) System.out.println("Not found");  
     } 
    } 
} 

Это код, и я получаю И код имеет имя и номера и строки запроса!Получение другого выхода в цикле

sam=99912222 
Not found 
Not found 
harry=12299933 

Почему существует «Не найдено» два раза? Его следует печатать только один раз, поскольку есть только один запрос, который не находится в массиве! Невозможно понять

+5

Вы знаете, как использовать ваш отладчик? – tnw

+0

вы сумасшедший, пожалуйста, успокойтесь – OPK

+3

Форматирование вашего кода было ЧРЕЗВЫЧАЙНЫМ. Я сделал это презентабельно. Вам будет намного легче найти ошибки, если вы не боретесь с кодом, похожим на то, что он был напечатан пьяными обезьянами. –

ответ

1

Вы должны оставить цикл после установки flag к 1.
Прямо сейчас вы проверить s равны ли все элементы в name.
Добавить

break; 

после

System.out.println(name[i]+"="+num[i]); 
flag=1; 
+0

Решил проблему! – Vishal

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