NoSuchElementException: строка не найдена

Я работаю над простым проектом, я взял его из Веб-сайт, что дает некоторую возможность улучшить свои навыки кодирования в java.

import java.util.Scanner;

public class Test1 {        
  public void test() {
    Scanner in = new Scanner(System.in);
    System.out.println("enter something :");
    String str = in.nextLine();
    StringBuilder sb = new StringBuilder(str);
    if (str.isEmpty()) {
        System.out.println("you should write something");
    }
    if (str.length()<=30){
        System.out.println("reverse : "+sb.reverse());
    }else {
        System.out.println("Error");
    }
    System.out.println("----------------------");   
  }

  public static void main(String[] args) {  
    Test1 c = new Test1 ();
    for (int i = 1; i <= 10 ; i++) {
        System.out.println("case number : " +i);
        c.test();
    }
  }
}

case number : 1
enter something : ayoub
reverse : buoya
----------------------
...loop continue ..

Мой код работает так, как я хочу, в терминале eclipse, но когда я помещаю его в «редактор кода» веб-сайта, этот последний дает мне ошибку времени выполнения, которая говорит:

Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1540)
at Test1.test(Test1.java:10)
at Test1.main(Test1.java:31)

Я попытался найти в StackOverflow некоторые решения, но не нашел.

Просто догадываюсь, поскольку у вас недостаточно информации: eclipse мог подключить System.in к окну консоли, чтобы вы могли вводить туда данные. Я не знаю, что делает «редактор кода» веб-сайта, но он может ожидать ввода из какого-то места, где вы не можете его ввести. В будущем постарайтесь определить, с чем конкретно вы работаете — например, имя упомянутого вами «редактора кода» — и, поскольку у вас есть номер строки в трассировке стека, определите строку кода, которую вы разместили, которая соответствует эта линия.

arcy 03.02.2019 14:43

Как упомянул @arcy, я думаю, что это связано с «редактором кода». Я попробовал этот компилятор онлайн и, похоже, столкнулся с той же проблемой. Принимая во внимание, что тестирование того же кода работало в Netbeans.

Shahlin Ibrahim 03.02.2019 14:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
2
2 953
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы, вероятно, используете онлайн-редактор/компилятор кода Java, который не имеет ввода stdin.

Как заявил дугообразный, вы, вероятно, используете IDE со встроенным консольным окном, которое позволяет вам передавать стандартные входные данные в вашу программу.

Следующий онлайн-редактор позволит вам добавить входные данные. Вы должны позаботиться о том, как вы используете метод nextLineScanner:

Исключение, которое вы получаете, является результатом того, что сканер не получает никаких входных данных, как видно из здесь. Я предлагаю вам реорганизовать цикл на сканере, используя метод hasNextLine из Сканер.

@ayoubelmohamedi Рад помочь, приятель.

Rann Lifshitz 04.02.2019 09:15

Использовали терминал IntelliJ IDEA. В программе установки проекта есть несколько пакетов с основными методами, просто чтобы посмотреть, как обстоят дела с многопоточностью (из-за лени). Используются задачи Gradle для запуска основных методов из пакетов в качестве задач. Сканер никогда не ждал ввода пользователя. Однако, если то же самое делается в основном классе, сборка и запуск как jar, чем работает нормально. К сожалению, мне потребовалось полдня, чтобы решить эту проблему. До сих пор не знаю, почему это происходит.

zxxz 31.10.2020 09:25

Другие вопросы по теме