2016-09-11 5 views
0

IF 문을 반복하는 것보다 코드에서 더 효율적으로 처리 할 수있는 부분을 파악하려고합니다. 현재 기본 계산기 앱을 실행하기 위해 NB IDE를 25 초 사용하고 있습니다.이 계산 작업을 단축하기 위해 수행 할 수있는 작업 (Java)

코드 스 니펫을 찾을 수는 있지만 실제로 축소해야하는 실제 방법은 찾을 수 없으므로 도움을 주시면 감사하겠습니다. 내 동등한 기능에 대한

나의 현재 코드는 다음과 같습니다

private void jBtn18ActionPerformed(java.awt.event.ActionEvent evt) {          
     String finalAnswer; 

     secondnumber = Double.parseDouble(jtxtDisplay.getText()); 


       if (operations == "+") 
       { 
        result = firstnumber + secondnumber; 
      String answer = String.format("%.0f",result); 
          jtxtDisplay.setText(answer); 
       } 
       else if (operations == "-") 
       { 
        result = firstnumber - secondnumber; 
      String answer = String.format("%.0f",result); 
          jtxtDisplay.setText(answer); 
       } 
       else if (operations == "/") 
       { 
        result = firstnumber/secondnumber; 
      String answer = String.format("%.0f",result); 
          jtxtDisplay.setText(answer); 
       } 
       else if (operations == "*") 
       { 
        result = firstnumber * secondnumber; 
      String answer = String.format("%.0f",result); 
          jtxtDisplay.setText(answer); 
       } 
       else if (operations == "%") 
       { 
        result = firstnumber % secondnumber; 
      String answer = String.format("%.0f",result); 
          jtxtDisplay.setText(answer); 
       } 
    }  
+3

나는이 것을하지 [당신이'String' (들)을 비교하는 방법에 전혀 작동하지 않습니다 의심 자바] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java). –

+0

표시된 코드로 인해 응용 프로그램이 느려지는 경우는 거의 없습니다. 성능 분석 도구를 사용하여 코드가 왜 느린 지 알아보십시오. https://blog.idrsolutions.com/2014/06/java-performance-tuning-tools/에서 도구를 선택하십시오. – Guenther

답변

0

당신은 단축 할 수있는 정도가 아니다. 너 5 가지를 지켜야 해. 또한, 그런 문자열을 비교하는 것은 정확하지 않습니다.

if (operations.equals("+")) 
{ 
    result = firstnumber + secondnumber; 
} 
else if (operations.equals("-")) 
{ 
    result = firstnumber - secondnumber; 
} 
else if (operations.equals("/")) 
{ 
    result = firstnumber/secondnumber; 
} 
else if (operations.equals("*")) 
{ 
    result = firstnumber * secondnumber; 
} 
else if (operations.equals("%")) 
{ 
    result = firstnumber % secondnumber; 
} 
String answer = String.format("%.0f",result); 
jtxtDisplay.setText(answer); 

설명 :

==이 같은 문자가 문자열에 대한 다를 수 있습니다 문자열의 메모리 위치를 비교합니다. .equals은 문자열의 실제 문자를 비교하므로 사용해야합니다. 코드의

이 두 라인 : if 문

String answer = String.format("%.0f",result); 
jtxtDisplay.setText(answer); 

마다 반복된다. 꺼내야합니다.

+1

Java 7 이상에서는 문자열에서 스위치를 사용할 수 있습니다. –

+0

@MarkRotteveel 예, 알고 있습니다. 하지만 스위치를 사용하면 코드 수를 줄이지는 못합니다. 쓰여 져야만하는 'break'문에 대해서 생각해보십시오. – Sweeper

+0

글쎄, 뺨에 혀가 있습니다 - 중괄호 스타일로 표시하면 조건 당 한 줄을 절약 할 수 있습니다 :). 그리고 당신이 케이스 당 리턴으로 도우미 메소드를 만들면, 다른 라인을 저장할 것입니다. –

0

끝 부분에 반복되는 2 줄을 나올 수 있습니다. 물론 Compressor 문자열에 대해 equals 메서드를 사용해야합니다.

private void jBtn18ActionPerformed(java.awt.event.ActionEvent evt) {          
     String finalAnswer; 

     secondnumber = Double.parseDouble(jtxtDisplay.getText()); 




     if (operations.equals("+")) 
     { 
      result = firstnumber + secondnumber; 

     } 
     else if (operations.equals("-")) 
     { 
      result = firstnumber - secondnumber; 

     } 
     else if (operations.equals("/")) 
     { 
      result = firstnumber/secondnumber; 

     } 
     else if (operations.equals("*")) 
     { 
      result = firstnumber * secondnumber; 

     } 
     else if (operations.equals("%")) 
     { 
      result = firstnumber % secondnumber; 
     } 

     String answer = String.format("%.0f",result); 
     jtxtDisplay.setText(answer); 
}  

다른 possiblity가 대신 "스위치 ... 경우"의 케이스를 사용하는 것입니다

관련 문제