2016-07-31 4 views
0

최근 스플릿을 분할하여 방정식을 읽는 방법을 만들었습니다. 그리고 방정식을 읽는 부분을 읽고 루프를 따라 기호를 찾아서 기호 앞뒤에 번호를주는 루프로갑니다. 문제는 내가 오류가 발생하지만 그것을 볼 수 있기 전에 사라집니다. 올바른 경우 Java가 분할 된 후 + 기호를 읽을 수 없습니다. 내가 어떤 타입인지 알지 못하고 어떻게 예외를 잡을 수 있을지 확신 할 수 없기 때문에 어떤 도움이 좋을 것이다. 감사.for 루프의 스플릿 읽기

private void sortEquasion(){ 
    String[] t = Equasion.split("\\+"); // this line added on 
    for(int counter = 0; counter<t.length; counter++){ // this part added 
     if(t[counter].contains("+")){ 
      String i = t[counter -1]; 
      String i2 = t[counter + 1]; 
      System.out.println(i + i2); 
     } 
    } 
    //if(Equasion.contains("(")){ //untage this if code above does not work 

    //} 
} 
+0

어떤 프로그래밍 환경을 사용하고 있습니까? –

+0

나는 이클립스를 사용하고있다. – furProgrammer

+1

당신은 아마'ArrayIndexOutOfBoundsException'을 얻고 있습니까? "디버그"옵션을 사용하고 print 문 앞에 중단 점을 추가하십시오. 또한,'t [counter]'는 아마도'+'를 포함하지 않을 것이다. (왜냐하면 당신은'+'에 기초하여 분리하고 있기 때문이다) – TheLostMind

답변

0

표시되는 오류가 확실하지 않습니다. 그러나 캐릭터를 분리하면 그 캐릭터는 결과 배열의 문자열에 나타나지 않습니다. 예를 들어, 다음 코드

for (counter i = 0; i < counter.length; counter++) { 
    // bad: index out of bounds exception on last iteration 
    String s = t[counter + 1]; 
} 

하지만 누군가 인덱스와 루프를 가지는, 상기와 같이

1 
2 = 3 

이 또한 참고 :

public static void main(String[] args) { 
    String equation = "1 + 2 = 3"; 
    for (String s : equation.split("\\+")) { 
     System.out.println(s); 
    } 
} 

출력 될 것이다 분할이 모두 +을 제거하므로 해당 코드가 실행되지 않아야하므로 예외가되어서는 안됩니다. 하지만,

try { 
    ... // do stuff 
} catch (Throwable thrown) { 
    thrown.printStackTrace(); 
} 

주의 사항 : 코드가 예외를 던지고있다 (또는 오류)하지만 당신은이 (그리고 어떤 이유로 삼켜지고 있습니다) 알고 무엇을하지 않으면, 당신은 시도의 CATCH 구문을 사용할 수 있습니다 , Throwable을 잡는 것은 일반적으로 나쁜 습관이고 담요 잡는 것은 입니다. 모두 예외는 대개 잘못된 생각입니다. 실제 코드의 경우 특정 예외 유형을 포착하십시오.

디버깅하는 가장 쉬운 방법은 IDE에 중단 점을 설정하고 코드를 단계별로 실행하는 것입니다. 내 생각 엔 (코드의 나머지 부분을 보지 않고) 오류/예외가 코드의 다른 부분에서 오는 것입니다.

+0

도움을 주셔서 감사합니다. 나는 여전히이 방법을 사용하지만 여전히 Shunting-Yard 알고리즘으로 전환 할 방법을 찾기 위해 노력할 것입니다. – furProgrammer