Простой ответ, что «10-4» не является простым числом, это вычисление, поэтому разбор его к междунар не даст никаких результатов ..
Вам придется разобрать вашу строку ..
int aa = evaluteQuestion(questionArray[0]);
И реальное волшебство происходит здесь:
public static int evaluteQuestion(String question){
Scanner sc = new Scanner(question);
// get the next number from the scanner
int firstValue = Integer.parseInt(sc.findInLine("[0-9]*"));
// get everything which follows and is not a number (might contain white spaces)
String operator = sc.findInLine("[^0-9]*").trim();
int secondValue = Integer.parseInt(sc.findInLine("[0-9]*"));
switch (operator){
case "+":
return firstValue + secondValue;
case "-":
return firstValue - secondValue;
case "/":
return firstValue/secondValue;
case "*":
return firstValue * secondValue;
case "%":
return firstValue % secondValue;
// todo: add additional operators as needed..
default:
throw new RuntimeException("unknown operator: "+operator);
}
}
Если у вас есть мо в ваших выражениях, вы можете поставить код выше в цикл. Однако следите за порядком работы. Вещи могут стать немного волосатыми, если вы хотите реализовать правильный парсер для любого выражения
Если я правильно понял, вопросArray [0] равен «10-4», который представляет собой строку с символами, которые не являются номерами, здесь '- ' персонаж. ParseInt может обрабатывать числа, а не выражения, если я правильно помню. Вам нужно будет написать функцию, которая извлекает кулак и второе число из строки, а затем выполняет математику в соответствии с оператором между –
. Я удалил свой ответ, и теперь я работаю над новым. Удерживайте туго –
, почему этот вопрос имеет такой низкий балл? он следует всем правилам для запроса хорошего вопроса, и это довольно очевидно, что проблема ...? ребята, не просто голосуйте, оставляйте хотя бы комментарий ..! –