Помощь - Поиск - Пользователи - Календарь
Полная версия: [Java] считывание формулы из файла
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Shashlyk
Добрый Вечер!!! smile.gif Помогите Пожалуйста переделать программу так, чтобы формула, которую надо вычислить содержалась в файле "a.txt":
package formula;

import java.io.IOException;
import java.io.InputStreamReader;

public class Formula {


public static void main(String[] args) throws IOException{
System.out.println("Введите формулу: ");
Formula f = new FormulaA();
int res = f.parseFormulaA();
System.out.println("результат: " + res);
}

InputStreamReader isr;

FormulaA(){
isr = new InputStreamReader(System.in);
}

int parseFormula() throws IOException {
int sym = isr.read();
if (sym != -1){
char ch = (char)sym;
if (Character.isDigit(ch)){
return Character.digit(ch, 10);
}

int left = parseFormula() ;
ch = (char)isr.read();
int right = parseFormula();
int result;
switch(ch){
case '+': result = left + right; break;
case '-': result = left - right; break;
default:
result = left * right; break;
}
ch = (char)isr.read();
return result;
}
return 0;
}
}


Можно ли использовать такую вот вещь: InputStreamReader isr1 = new InputStreamReader("input.txt"); ?
Shashlyk
package formula;

import java.io.IOException;
import java.io.InputStreamReader;

public class Formula {


public static void main(String[] args) throws IOException{
/*System.out.println("Введите формулу: ");
Formula f = new FormulaA();
int res = f.parseFormulaA();
System.out.println("результат: " + res); */
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("input.txt"),
"8859_1"));
String str = in.readLine();
System.out.println(str);
}

InputStreamReader isr;

/*FormulaA(){
isr = new InputStreamReader(System.in);
} */

int parseFormula() throws IOException {
int sym = isr.read();
if (sym != -1){
char ch = (char)sym;
if (Character.isDigit(ch)){
return Character.digit(ch, 10);
}

int left = parseFormula() ;
ch = (char)isr.read();
int right = parseFormula();
int result;
switch(ch){
case '+': result = left + right; break;
case '-': result = left - right; break;
default:
result = left * right; break;
}
ch = (char)isr.read();
return result;
}
return 0;
}
}


Данные из файла считываются, но не выводится ответ на экран((( Помогите Пожалуйста переделать код smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.