2017-01-20 4 views
1

Я пытаюсь ответить на следующий вопрос. Проверено на моем IDE и компилирует хорошо, но на сайте, он выдает следующее сообщение об ошибке:Ошибка компиляции на сайте SPOJ

runtime error (NZEC) edit ideone it 

Пожалуйста, советы, что я делаю неправильно.

Link to SPOJ Site

Вопрос перезаписи небольшое число от входа до выхода. Остановить обработку ввода после чтения в номере 42. Все числа на входе представляют собой целые числа одной или двух цифр.

Ответ

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 

     int i = 0; 

     while (i != 42){ 

      Scanner s = new Scanner(System.in); 
      i = s.nextInt(); 
      System.out.println(i); 
     } 
    } 
} 
+0

Не уверен, что вы описываете, но попробуйте переместить 'Scanner s = new Scanner (System.in);' перед циклом. –

+1

Этот вид сайта обычно не поддерживает сканер, но предоставляет способ получения ввода. Поиск на форуме по этому поводу – AxelH

+0

Личные заметки: этот вопрос кажется укусом старым, форум по этому вопросу наводнен неанглийским языком, так что вы, возможно, не нашли никакой помощи. Здесь это кажется укусом случайным (некоторые хорошие ответы не проверяются) – AxelH

ответ

-1

Вот несколько советов для вас:

  1. Вы должны инициализировать Scanner только один раз, например, прямо перед циклом while.

  2. Ваша программа в то же время неправильная. Обратите внимание, что при появлении сообщения не следует печатать номер 42.

  3. Когда вы исправить эту проблему, она будет еще лучше, если ваша программа будет устойчива к конечной последовательности чисел без числа 42. Ваш цикл должен работать следующим образом: while (there_is_still_something_to_read) {. В настоящее время ваша программа держится в бесконечном цикле.

+0

Было бы неплохо, если бы автор «-1» объяснил причину. – Robson