Почему дополнение не будет работать в моем калькуляторе консоли Java? И как сделать так, чтобы команда "выход" для выхода из программы всегда работала?
Я хочу сделать так, чтобы эта программа могла правильно запускать добавление двух операндов, если она обнаруживает знак + в том, что пользователь вводит. Я также хочу сделать так, чтобы программа могла выходить всякий раз, когда выходят пользовательские типы, но это работает, только если это делается в первой строке? Программист новичок, поэтому заранее извиняюсь за ошибки нуби.
package javaapplication59;
import java.util.Scanner;
public class JavaApplication59 {
public static void main(String[] args) {
System.out.println("This is a calculator of singular expressions.");
calculator();
}
public static void calculator() {
System.out.println("Enter an expression, or type \"quit\" to exit.\n");
Scanner kbd;
kbd = new Scanner(System.in);
System.out.println();
String text = kbd.nextLine();
while (!text.equalsIgnoreCase("quit")) {
Scanner tokens = new Scanner(text);
if (tokens.hasNextInt()) {
twoOperand(tokens);
} else {
oneOperand();
}
}
System.out.println("Farewell");
System.exit(0);
}
public static void twoOperand(Scanner tokens) {
int firstNum = tokens.nextInt();
String operator = tokens.next();
int secondNum = 0;
if (tokens.hasNextInt()) {
secondNum = tokens.nextInt();
} else {
System.out.println("Error, not valid expression");
calculator();
}
while (tokens.next().contains("+")) {
addition();
}
while (tokens.next().contains("-")) {
subtraction();
}
while (tokens.next().contains("*")) {
multiplication();
}
while (tokens.next().contains("/")) {
division();
}
while (tokens.next().contains("%")) {
modulus();
}
while (tokens.next().contains("^")) {
exponentiation();
}
}
public static void oneOperand() {
}
public static void addition() {
Scanner tokens;
tokens = new Scanner(System.in);
String name = tokens.next();
int sum = 0;
while (tokens.hasNextInt()) {
int num = tokens.nextInt();
sum += num;
System.out.println(sum);
calculator();
}
}
}
1 ответ
Это быстро составленная версия того, что вы ищете, с функциональным сложением и умножением. Таким образом, вы выбираете оперу, нажимаете ввод, выбираете int для выполнения, вводите, выбираете следующий, вводите и т. Д. С промежуточными результатами. Также введите выход в любое время, чтобы выйти. Изменить по своему вкусу. Удачи.:)
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
System.out.println("This is a calculator:");
calc();
}
public static void calc(){
System.out.println("Press *,/,+,- to perform op on following ints:");
Scanner sc = new Scanner(System.in);
String opString = sc.nextLine();
if(opString.equalsIgnoreCase("quit")){
System.out.println("Calculator quit!");
sc.close();
return;
}
switch (opString) {
case "*": multiplication();
break;
case "/": division();
break;
case "+": addition();
break;
case "-": subtraction();
}
}
public static int multiplication(){
Scanner sc = new Scanner(System.in);
int op1 = 1, op2;
while (sc.hasNextInt()){
op2 = sc.nextInt();
op1 *= op2;
System.out.println("= " + op1);
}
sc.close();
return op1;
}
public static int division(){
return 0;
}
public static int addition(){
Scanner sc = new Scanner(System.in);
int op1 = 0, op2;
while (sc.hasNextInt()){
op2 = sc.nextInt();
op1 += op2;
System.out.println("= " + op1);
}
sc.close();
return op1;
}
public static int subtraction(){
return 0;
}
}