Как я могу убедиться, что пользовательский ввод точно и строго
обугливается? здесь, в моей программе, он принимает более одного символа (+ - *), но
работает только с первым символом (+). Я хочу убедиться, что более одного
символ не принимается в качестве ввода.
Если вы используете консольное приложение и Scanner
, единственное, что вы можете сделать, это прочитать String
и проверить его длину. Если вы используете Swing
, вы можете реализовать KeyPressListener
и продолжить работу сразу после нажатия пользователем кнопки (но не для консольного приложения).
После успешного выполнения программы, как я могу как-то
пользователь повторил основной метод? Я имею в виду, пользователь добавляет два числа, получает его
ответить, и он хочет сделать еще один расчет, может быть, умножить два
номера на этот раз. Я могу попросить пользователя «да» или «нет», чтобы продолжить, но
как мне вернуть его обратно в начало? (будет ли работать петля? как?)
Вы не можете повторить main
метод. В Java
main
метод выполняется только один раз. Чтобы повторить ваш код, вы можете поместить весь контент метода main
в бесконечный цикл или переместить контент в отдельный метод и вызвать его из цикла в методе main
.
В конце программы я использовал два метода для вывода сообщения.
system.out.print работает нормально, но метод JOptionPane не отображается
сообщение и программа не завершаются (я прокомментировал это
из). Хотелось бы понять почему?
JOptionPane
работает только для графического приложения (Swing / AWT). Это не доступно в консоли. У вас там только стандартный ввод и вывод.
Требуется ли регистр по умолчанию для коммутатора? И следую ли я
правильная структура кода? (расположение и использование фигурных скобок)
Нет, default
регистр необязателен для синтаксиса JVM . Я помню, что, например, в C++
была рекомендация разместить его (событие пустое), чтобы исключить побочные эффекты компиляторов. Я не знаю, есть ли такая рекомендация в Java
, но когда я использую switch
, я предпочитаю всегда добавлять его, чтобы исключить логическую проблему (но это определенно необязательно в соответствии с синтаксисом case). Вы правильно используете switch
.
public static void main(String[] args) {
System.out.println("This is a simple calculator that will do basic calculations such as :"
+ "\nAddition (+)"
+ "\nMultiplication (*)"
+ "\nSubtraction (-)"
+ "\nDivision (/)");
System.out.println();
try (Scanner scan = new Scanner(System.in)) {
while (true) {
System.out.println("Enter Any positive number followed by pressing ENTER.");
int first = scan.nextInt();
System.out.println("Enter a valid OPERATOR (+,*,-,/) sign followed by pressing ENTER.");
String operator = scan.next();
while (operator.length() != 1 || !"+*-/".contains(operator)) {
System.out.println("Please Re-enter a valid Operator (+,-*,/)");
operator = scan.next();
}
scan.nextLine();
System.out.println("Enter your Second number followed by an ENTER stroke.");
int second = scan.nextInt();
if ("+".equals(operator))
System.out.println("The Resulting sum is " + (first + second));
else if ("*".equals(operator))
System.out.println("The Resulting mul is " + (first * second));
else if ("-".equals(operator))
System.out.println("The Resulting sub is " + (first - second));
else if ("/".equals(operator))
System.out.println("The Resulting div is " + ((double)first / second));
System.out.println();
System.out.println("Do you want to exit ('y' to exit)?");
if ("y".equals(scan.next()))
return;
System.out.println();
}
}
}