2015-05-12 2 views
0

Вот мой код:Извлечение математике оператор из строки [] Java

public static void main(String[] args) { 
    args = new String[3]; 
    args[1]="+"; 
    args[0]="8"; 
    args[2] = "5"; 
    if(args.length<3){ 
     System.out.println("Not enough arguments"); 
    } else if(args[1]!="+"&&args[1]!="-"&&args[1]!="*"&&args[1]!="/"){ 
     System.out.println("Don't equals basic math operators.Please iput j'+', '-' ,'*', '/'"); 
    }else if(!args[0].matches("[0-9]+")||!args[2].matches("[0-9]+")){ 
     System.out.println("Error. Please insert numeric value"); 
    }else { 
     double a = Double.parseDouble(args[0]); 
     char b = args[1].charAt(0); 
     double c = Double.parseDouble(args[2]); 

     System.out.println(a+b+c); 

    } 

а + Ь + с дает результат 56,0 InstEd из expexting результате 13.Может кто-нибудь объяснить, где моя вина? Спасибо заранее.

ответ

1

Это потому, что char является числовым типом и то, что происходит, что вы суммируя значение a, числовое значение b и значение c.

Вам необходимо создать новый условный оператор. Например:

if (b == '-') { 
    System.out.println(a - c); 
} else if (b == '+') { 
    System.out.println(a + c); 
} else if (b == '*') { 
    System.out.println(a * c); 
} else if (b == '/') { 
    System.out.println(a/c); 
} 

Кроме того, вы можете воспользоваться Java Scripting API, вместо того, чтобы делать сложные условные операторы. Трюк для представления операции как String и передать ее методу ScriptEngine#eval().

ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); 
ScriptContext context = engine.getContext(); 
StringWriter writer = new StringWriter(); 
context.setWriter(writer); 

engine.eval("print(" + a + b + c + ")"); 

String output = ; 
System.out.println("Script result: " + writer.toString()); 
+0

@kocko Большое спасибо – Zamotay

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