|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
kvaka : 50 Новичок
|
Фев 04, 2012 18:33 |
|
|
Помогите решить следующую проблему:
Есть довольно стандартная задача:
Реализация простейшего калькулятора. Доступны четыре арифметических
действия: сложение (+), умножение (*), деление (/) и вычитание (-). На вход
программе подается строка вида [число][ариф. знак][число], на выходе результат
операции.
Например:
Input: 4+7
Output: 11
Ничего вроде бы сложного. Написал код:
| Код: |
package testwork;
public class Testwork3 {
public static void main(String[] args) {
if (args.length<3){
System.out.println("Арифметическая операция задана неверно-введено меньше 3х аргументов");
return;
}
System.out.println("ВВедены параметры:"+args[0]+args[1]+args[2]);
double x,y,result;
try{
x=Double.parseDouble(args[0]);
y=Double.parseDouble(args[2]);
}catch(Exception e){
System.out.println("аргументы-числа заданы неверно");
System.out.println(e.toString());
return;
}
if (args[1].length()>1){
System.out.println("Арифметическая операция должна быть задана одним символом");
return;
}
switch (args[1].charAt(0)){
case '+':
result=x+y;
break;
case '-':
result=x-y;
break;
case '*':
result=x*y;
break;
case '/':
if (y==0) {
System.out.println("Деление на ноль!!!");
return;
}
result=x/y;
break;
default:
System.out.println("Арифметические операции задаются следующими символами: + , - , * , /");
return;
}
System.out.println(args[0]+args[1]+args[2]+"="+result);
}
}
|
Все работает как надо за исключением одного момента:
при вводе в строку аргументов "*" для выполнения умножения происходит что-то не то.
Вставленная в начало программы строчка специально для отслеживания этого момента
| Код: |
System.out.println("ВВедены параметры:"+args[0]+args[1]+args[2]);
|
при вводе в строке аргументов, например, 120 * 20 печатает в консоли вместо "ВВедены параметры:120*20" такую фигню: "ВВедены параметры:120buildbuild.xml".
Конечно можно поменять в программе "*" на "х" и не париться, тем не менее хочется выполнить все по заданию. Соответственно вопрос: почему происходит такая фигня? "*" - это для строки аргументов какой-то спецсимвол??? Если что - код пишу в NetBeans 7.0.1 |
|
|
|
 |
мсье клоц : 563 Постоянный посетитель
|
Фев 04, 2012 18:59 |
|
|
Да, звёздочка - это спецсимвол. За что именно он отвечает я сказать не могу, но вообще используется как маска, т.ч, возможно, что он перечисляет некоторые переменные или содержимое папки.
Попробуйте из разных папок запустить приложение из командной строки командой java Testwork3 4 * 3 и поглядите, что он будет выводить в каждом из случаев. И да, поместите его в default package для пущего эффекта.
p.s.
Наверное, будет лучше считывать цифирь и знаки из стандартного потока ввода. |
|
|
|
 |
loptop : 143 Новичок
|
Фев 04, 2012 21:49 |
|
|
| Сначала с твоей строкой работает шел и он вместо твоей звездочки подставляет название всех файлов в папке, тебе надо использовать двойные кавычки, чтобы выделить строку "7+2" |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Основы языка Java |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|