2017-02-13 10 views
0

Я занимался проблемой ранжирования хакеров, связанной с «Словари и карты» https://www.hackerrank.com/challenges/30-dictionaries-and-maps Я придумал решение, но ожидаемый результат не отображается должным образом. Я должен нажать клавишу возврата, чтобы получить последний выход. Ниже приведен фрагмент кода, в котором я столкнулся с проблемой.Ожидаемый результат не отображается должным образом

import java.util.HashMap; 
import java.util.Map; 
import java.util.Scanner; 

public class Solution { 

public static void main(String[] args){ 

    int noOfQueries; 
    String key; 
    String value; 
    String searchValue; 

    Scanner scan = new Scanner(System.in); 
    Map<String, String> map = new HashMap<String, String>(); 

    noOfQueries = scan.nextInt(); 

    for (int i = 0; i < noOfQueries; i++) { 
     key = scan.next(); 
     value = scan.next(); 
     map.put(key, value); 
    } 

    while(scan.hasNext()){ 
     searchValue = scan.next(); 
     if(map.containsKey(searchValue)){ 
      System.out.println(searchValue + "=" + map.get(searchValue)); 
     }else { 
      System.out.println("Not found"); 
     } 

    } 
} 
} 

Примеры входов и выходов:Refer image for sample inputs and outputs

ответ

0

Я использовал свой код, чтобы запустить его на hackerrank и всех моих случаях тест пройден успешно. Я предполагаю, что вы столкнулись с этой проблемой при запуске на Eclipse или другой среде IDE. Поскольку у вас есть метод в цикле while, метод будет бесконечно продолжать цикл, и если вы исчерпаете все свои запросы, то ваша программа не знает, что вы сделали ввод всех запросов. На Hackerrank это отличается тем, что у них есть вход в файл, который, в конечном счете, имеет конец, и scan.hasNext() поймает это и выйдет.

+0

Спасибо Jayesh, я запускал его на Eclipse :) – Nimesh