Калькулятор на 3 числа Java
Как сюда добавить 3 число?
public static void main(String[] args) throws IOException {
System.out.print("Введите пример: ");
char x = (char) System.in.read();
char ope = (char) System.in.read();
char y = (char) System.in.read();
int xVal = x - 48;
int yVal = y - 48;
System.out.print("= ");
System.out.print(xVal + yVal);
// сейчас выводится пример 5+5=10 // нужно чтобы считывался 2ой оператор и число и выводил результат. Пример 10-2*2=16
Вот что получилось
public static void main(String[] args) throws IOException {
System.out.print("Введите пример: ");
char x = (char) System.in.read();
char ope = (char) System.in.read();
char y = (char) System.in.read();
char ope1 = (char) System.in.read();
char z = (char) System.in.read();
int xVal = x - 48;
int yVal = y - 48;
int zVal = z - 48;
System.out.print("= ");
Я понимаю что тут все злые и проще нагрубить или отправить дальше самой с этим разбираться. Не тратьте ваше время тогда если вы не знаете или не хотите помочь, я потому и задала тут вопрос потому что спросить мне больше не у кого и не знаю как это продолжить. Про поиск в интернете не надо мне говорить, я не на столько ленивая чтобы им в первую очередь не пользоваться.
Ответы (2 шт):
Вам нужно преобразовать пришедшую строку из консоли в число. Пример :
Integer.parsInt("4");
Или
Integer.valueOf("4");
Этот код считает примеры с операциями + и -. Например 132-45+12-23. Если хотите можете расширить его на */, но стоит учесть то уже не будет работать, так как нужен будет приоритет операций, но думаю у вас всё получится, если немножко посидеть и подумать! :)
public class Calc {
public static void main(String[] args) throws IOException {
{
Scanner in = new Scanner(System.in);
System.out.print("Введите пример: ");
String example = in.nextLine();
System.out.print(calculate(example));
}
}
public static Integer calculate(String example){
example = example.replace(" ", "");
if(!example.matches("^(\\d{1,}[-+]){1,}\\d{1,}$")){
throw new RuntimeException("НЕДОПУСТИМЫЙ ФОРМАТ");
}
Integer[] ints = Arrays.stream(example.split("[-+]")).map(Integer::parseInt).toArray(Integer[]::new);
int result = ints[0];
int counter = 1;
for (char ch : example.replaceAll("[0-9]","").toCharArray()) {
if (ch == '-') result -= ints[counter];
if (ch == '+') result += ints[counter];
counter++;
}
return result;
}
}