Вопрос или проблема
Когда я запускаю программу со сканером в TextPad, она компилируется без ошибок, но потом просто загружается до тех пор, пока не будет прервана, и в итоге выдает код выхода 130.
import java.util.Scanner;
public class Lab3 {
public static void main(String[]args) {
double Sales;
Scanner keyboard = new Scanner(System.in);
System.out.print("Пожалуйста, введите общие продажи компании в миллионах с точностью до 2 знаков после запятой: ");
Sales = keyboard.nextDouble();
System.out.println(Sales);
double EastCoastSales = (Sales*0.62);
System.out.println("Подразделение Восточного побережья заработало " + EastCoastSales + " миллионов на продажах");
}
}
Это код, который я пытаюсь запустить. Когда я его прерываю, он выводит первую строку, но только это; в остальном он просто загружается в пустом окне.
Я пытался копировать примеры учителя или другие примеры из интернета и запускать их, однако результат один и тот же: он загружается бесконечно, а затем, когда я прерываю, он выводит println ниже Scanner x = new Scanner(System.in) и затем завершает работу с кодом 130.
Ответ или решение
Проблема, с которой вы столкнулись, связана с использованием Scanner
для ввода данных в TextPad. При компиляции и запуске программы вы видите, что программа "зависает", ожидая ввода, но фактически вы не можете ввести данные. Главной причиной этого является то, как TextPad управляет стандартным вводом и выводом.
Вот несколько шагов, которые помогут вам решить проблему:
-
Проверка конфигурации TextPad:
Убедитесь, что в настройках TextPad настроен корректный способ выполнения Java-программ. Ниже приведен способ, как это можно сделать:- Перейдите в
Configure
->Preferences
. - На вкладке
Tools
проверьте конфигурацию для Java. Убедитесь, что командная строка для запуска включаетjava -cp ...
и не включает лишние параметры, которые могут ограничивать ввод.
- Перейдите в
-
Использование альтернативного терминала:
TextPad может не поддерживать стандартный ввод так, как вы ожидаете. Рассмотрите возможность использования других сред, таких как:-
Command Prompt (cmd) или Terminal: Запустите ваш
.java
файл из командной строки. Вам нужно скомпилировать класс с помощьюjavac Lab3.java
и затем запустить его с помощьюjava Lab3
. -
IDE: Попробуйте использовать более полную IDE, например IntelliJ IDEA или Eclipse, которые обеспечивают лучший интерфейс для работы с Java, включая поддержку ввода данных.
-
-
Проверьте ввод данных:
Если вы все-таки хотите использовать TextPad, убедитесь, что вы действительно вводите данные в ожидаемом формате. Например, если вы вводите строку, которая не может быть преобразована вdouble
, программа может зациклиться в ожидании корректного ввода. Попробуйте ввести только числа и избегайте символов. -
Вывод для отладки:
Вы можете попробовать вставить дополнительныеSystem.out.println()
в ваш код для проверки того, на каком этапе программа застревает, но имейте в виду, что стандартный вывод также может не отображаться, если программа держит ввод в ожидании.
Пример исправленного кода может выглядеть следующим образом, однако в этом случае
основное внимание следует уделить среде выполнения, а не изменению кода:
import java.util.Scanner;
public class Lab3 {
public static void main(String[] args) {
double Sales;
Scanner keyboard = new Scanner(System.in);
System.out.print("Пожалуйста, введите общую сумму продаж компании в миллионах с двумя знаками после запятой: ");
if (keyboard.hasNextDouble()) {
Sales = keyboard.nextDouble();
System.out.println(Sales);
double EastCoastSales = (Sales * 0.62);
System.out.println("Подразделение Восточного побережья заработало " + EastCoastSales + " миллионов в продажах.");
} else {
System.out.println("Ошибка ввода: убедитесь, что вы вводите числовое значение.");
}
keyboard.close(); // Не забудьте закрыть сканер
}
}
Если после всех этих шагов проблема не будет решена, рекомендую использовать другую среду разработки, так как это может значительно упростить выполнение и отладку ваших программ на Java.