Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> код калькулятора нужно чтобы примеры брал из файл, помогите дописать код 
:(
    Опции темы
vova1
Дата 26.1.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.1.2008

Репутация: нет
Всего: нет



есть код калькулятора 
нужно чтобы считывалсись примеры из файла и ответами записывались в другой
пример
первый файл:2+2
второй файл:2+2=4
и второй вопрос как сделать код ООП хотя бы немного
вот код может кому пригодится:
Код

package parser;
public class Token {
  
          static String inputExpression = "28/3+2*3";
      public static void main(String[] args) {
        double result = 0;
        double temporaryResult = 0;
        boolean isPlus = true;
         boolean isMultiplicate = true;
        boolean addMode = true;
        String token = "";
        do {
            token = token();
            if (isNumeric(token)){
                    if (addMode){
                            if (isPlus){
                                result = result + temporaryResult;
                                temporaryResult =Integer.parseInt(token);
                            }
                            else {
                                result =result - temporaryResult;
                                temporaryResult =Integer.parseInt(token);
                            }
                    }
                    else {
                        if (isMultiplicate) {
                            temporaryResult = temporaryResult*(Integer.parseInt(token));
                        }
                        else {
                            temporaryResult = temporaryResult/(Integer.parseInt(token));
                        }
                    }
            }
            else {
                if (token == "") {
                    if (isPlus) {
                        result = result + temporaryResult;   
                    }
                    else {
                        result = result - temporaryResult;
                    }
                }
                if (token=="+") {
                    addMode = true;
                    isPlus = true;
                }
                if (token=="-") {
                    addMode = true;
                    isPlus = false;
                }
                if (token=="*") {
                    addMode = false;
                    isMultiplicate = true;
                }
                if (token=="/") {
                    addMode = false;
                    isMultiplicate = false;
                }
            }
        } while (token!="");
              
        System.out.println(result);
        
   
      }

      
   private static boolean isNumeric (String input){
       try {
           int i = Integer.parseInt(input);
       } catch (Exception e){
           return false;
       }
       return true;
   }
   
    private static String token() {
        
            String token ="";
            String firstCharacter = inputExpression.substring(0,1);
            if ((firstCharacter=="+")||(firstCharacter=="-")||(firstCharacter=="*")||(firstCharacter=="/"))
                {
                    token=inputExpression.substring(0,1);
                    inputExpression = inputExpression.substring(1);
                    return (token);
                }
            int i=0;
            for ( i=0; i<inputExpression.length(); i++){

                if(isNumeric(inputExpression.substring(i,1)))
                {
                            token = token+inputExpression.substring(i,1);
                        }
                            else break;}
                
            inputExpression=inputExpression.substring(i);
            return (token);
   
       
    }
   
    
}




PM MAIL   Вверх
v2v
Дата 26.1.2008, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



ну ты запускал этот пример ? смотрел что оно делает? понимаешь какой части не хватает?
или тебе надо написать полностью рабочее приложение скомпилировать и выложить *.exe (*.jar) ? smile

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


Цитата(vova1 @  26.1.2008,  00:48 Найти цитируемый пост)

и второй вопрос как сделать код ООП хотя бы немного

вот на это я пожалуй отвечу smile
можешь создать два класса.
первый класс будет получать в качестве строку для вычисления ("2+2*2") , дальше вызывать свои внутренние методы и выдавать на выходе строку с подсчитанным результатом ("2+2*2=6") .

а второй клас, реализует работу с файлами, чтение запись и т.д. (познакомся с пакетом java.io.* )



--------------------
PM   Вверх
hamsterKSU
Дата 27.1.2008, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 1
Всего: 11



Цитата(v2v @  26.1.2008,  01:35 Найти цитируемый пост)
можешь создать два класса.первый класс будет получать в качестве строку для вычисления ("2+2*2") , дальше вызывать свои внутренние методы и выдавать на выходе строку с подсчитанным результатом ("2+2*2=6") .а второй клас, реализует работу с файлами, чтение запись и т.д. (познакомся с пакетом java.io.* )


помоему лучше если 
1. один класс строил дерево по строке - т.е. такой себе Builder. 
2. следующий класс считалка - т.е. Visitor
3-... ну и остальные классы занимающиеся GUI и работой с файлами

Добавлено через 2 минуты и 56 секунд
Разделение считалки от калькулятора нужно - писали такой калькулятор в универе, на параз по ООП, правда на плюсах. 
фишка в том что если есть дерево то ты напишешь к нему много визиторов, будь то считалка или например просто вывести пример в префиксной или постфиксной записи
PM MAIL ICQ   Вверх
Kangaroo
Дата 27.1.2008, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Тогда уж лучше использовать патерн Интерпретатор - Interpreter pattern. C этим точно будет ООП  smile 
А вот и калькулятор с его использованием - Interpreter pattern calculator

Это сообщение отредактировал(а) Kangaroo - 27.1.2008, 02:37


--------------------
Lost....
PM MAIL MSN   Вверх
hamsterKSU
Дата 28.1.2008, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 1
Всего: 11



Цитата(Kangaroo @  27.1.2008,  01:37 Найти цитируемый пост)
Тогда уж лучше использовать патерн Интерпретатор - Interpreter pattern.
А вот и калькулятор с его использованием - Interpreter pattern calculator


там тоже строится дерево smile.

в принципе за основу вообше можно взять antlr


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.