2013-11-25 4 views
2

Если у меня есть уравнение 7 + 13 = 20 как строка, как бы я мог получить символ оператора + из уравнения?Получение символа оператора из строки

String operator = fileContent.substring(fileContent.indexOf('+')); 

Я пытался что-то вдоль этих линий, а также изменения несколько вещей в нем, но я не смог получить оператор из. Я только смог вернуть его, например, + 13 = 20 или 13 = 20, но никогда не был одним из операторов.

Я не могу использовать regex, try/catch, массивы или SystemTokenizer для этого.

Кроме того, между числами не всегда будут пробелы, и они не всегда будут содержать только одну или две цифры.

Последнее изделие. Мне также нужно это, чтобы, если бы оператор был помещен во что-то вроде problem = (firstNumber + operator + secondNumber), он действительно работал бы, чтобы вычислить математику.

Ожидаемый результат или, по крайней мере, то, что я пытаюсь сделать, состоит в том, чтобы он принял первое и второе число и прочитал оператор, чтобы он мог выполнить математику проблемы. Это действительно запутанно, и мне очень жаль.

int first = Integer.parseInt(fileContent.substring(0, fileContent.indexOf(" "))); 
int second = secondNumber(result, fileContent); 
int last = Integer.parseInt(result.substring(result.indexOf("=") + 1)); 

Вот код, я должен получить первый, второй, и число ответов, но мне нужно, чтобы получить символ оператора в способе, которым я могу поставить его между первым и вторым номерами, так что фактически выполнит математику, и поэтому я могу проверить ее на номер ответа.

Его назначение, которое будет действовать как «математический проблемщик», но ни один из операторов не будет таким же.

Мне нужно его взять 7 and 13 и распечатать 20 как ответ.

+0

Какое это глупое требование? Используйте две подстроки. Один из них перед символом '+' и один для после '+'. Объедините эти струны. –

+0

Почему вы не можете использовать регулярное выражение, try/catch, массивы или SystemTokenizer? Что бы ни преподавал вам преподаватель в последних лекциях, вероятно, вы должны использовать. Кроме того, вы должны действительно опубликовать код, указывающий, что вы пробовали. – MarsAtomic

+1

Пожалуйста, покажите, каков ожидаемый результат. –

ответ

2

Этот ответ даст выход +. Учитывая ваше имя переменной operator, я предполагаю, что это то, что вы хотите.

Использование substring:

String operator = fileContent.substring(fileContent.indexOf('+'), fileContent.indexOf('+') + 1); 

или написано более читаемо:

int index = fileContent.indexOf('+'); 
String operator = fileContent.substring(index, index + 1); 

Использование charAt:

char operator = fileContent.charAt(fileContent.indexOf('+')); 

или записаны более читаемо:

int index = fileContent.indexOf('+'); 
char operator = fileContent.charAt(index); 

Edit:

Вот как найти первые и вторые номера:

String eqn = "7 + 13 = 20"; 

int operatorIndex = eqn.indexOf(operator); // already defined operator as a String 
int equalIndex = eqn.indexOf('='); 

int first = Integer.parseInt(eqn.substring(0, operatorIndex).trim()); 
int second = Integer.parseInt(eqn.substring(operatorIndex + 1, equalIndex).trim()); 

Теперь у нас есть String operator = "+"; и int first = 7; и int second = 13;

Click this sentence if you don't know what a switch statement is in Java. Это просто другой способ использования if-структуры. Это не сложно понять. Я могу переписать, используя if-структуру, если вы мне тоже.

Я просто хотел бы использовать это:

String operator = "+"; 

int first = 7; int second = 13; 

switch (operator) 
{ 
    case "+": 
     System.out.print("" + (first + second)); 
     break; 

    case "-": 
     System.out.print("" + (first - second)); 
     break; 

    case "*": 
     System.out.print("" + (first * second)); 
     break; 

    case "/": 
     System.out.print("" + (first/second)); 
     break; 

    default: System.out.print("not sum, difference, product or quotient"); 
} 

В том случае, когда operator = "+";, выход 20. Если operator = "-";, выход -6.

+0

Хотя я понимаю, что вы делаете, на самом деле он не работает с тем, что у меня уже есть, но он дал мне представление о том, что мне нужно сделать для этой проблемы. – CherryBomb95

+0

@ CherryBomb95 снова проверьте новое обновление. и держите меня в курсе, как я могу изменить свой код, чтобы дать вам желаемый результат. –

+0

Это работает, но есть ошибки, потому что я беру данные из файла. Помимо этого, он отлично работает. – CherryBomb95

2

Удалить все остальное:

String operator = fileContent.replaceAll("[^-+*/]", "");; 

Обратите внимание, что знак минус должен прийти первым или последним в классе символов или экранировать, в противном случае это оператор диапазона.

+0

К сожалению, никакого регулярного выражения. –

+1

Конечно, разумный ответ не допускается. Пахнет домашней работой. – MarsAtomic

Смежные вопросы