2017-10-12 1 views
-3

저는 java에서 새로 생겼습니다. 코드를 검토 할 때 나와 벗 잡아주십시오.브래킷과 빈 문자열 제거

코드의 최종 결과는 문자열 배열을 정수 배열로 구문 분석 할 수 있지만 예외를 얻을 수 있습니다. 나는 [및] 기호를 분할하려고 시도했지만 배열의 첫 번째 (0) 요소 splited_game_result [0]을 호출하면 아무 것도 반환하지 않습니다. 해결책은 무엇입니까? 나는 trim 방법을 사용해 보았습니다.

String[] ca_po_pe = {"4:7","PAUSE","2:0","1:3 PINE","PAUSE","CANCEL","2:4","0:5 PINE","PAUSE","CANCEL"}; 

    String canc_postp_pen_games = ""; 

    boolean confirming = true; 

    for(String looped_games : ca_po_pe) { 

    if(confirming) { canc_postp_pen_games+=looped_games; confirming=false; } 

    else { canc_postp_pen_games+=", "+looped_games; } } 

    System.out.println("LOOPED FINAL RESULT GAMES TO INSERT COMMAS: " + "\n" + canc_postp_pen_games + "\n"); 

    String[] fin_games_res = canc_postp_pen_games.split("[,]"); 

    ArrayList<String> arraylist= new ArrayList<String>(); 

    Collections.addAll(arraylist, fin_games_res); 

    for (String str: arraylist) {  
     } 

    System.out.println("ELEMENTS ADDED TO ARRAYLIST: " + arraylist + "\n"); 

int noItems = arraylist.size(); 

for (int i = 0; i < noItems; i++) { 

String currItem = arraylist.get(i); 

if (currItem.contains("PAUSE")) { 
arraylist.add(new String("400")); 
noItems++; } 

if (currItem.contains("CANCEL")) { 
arraylist.add(new String("300")); 
noItems++; } 

if (currItem.contains(" PINE")) { 
arraylist.add(new String("500")); 
noItems++; } 
    } 

    System.out.println("ELEMENTS BEFORE REMOVAL: " + "\n" + arraylist + "\n"); 

Iterator<String> iter_getting = arraylist.iterator(); 

while(iter_getting.hasNext()) { 

if(iter_getting.next().contains("PAUSE")){ 
    iter_getting.remove(); }} 

    Iterator<String> iter_getting1 = arraylist.iterator(); 

    while(iter_getting1.hasNext()) { 

if(iter_getting1.next().contains("CANCEL")){ 
    iter_getting1.remove(); }} 

    Iterator<String> iter_getting2 = arraylist.iterator(); 

    while(iter_getting2.hasNext()) { 

if(iter_getting2.next().contains(" PINE")){ 
    iter_getting2.remove(); }} 

    System.out.println("ELEMENTS AFTER REMOVAL: " + "\n" + arraylist); 

    System.out.println("ELEMENT ON INDEX 3 BEFORE CONVERTION TO ARRAY: " + "\n" + arraylist.get(3)); 

    String convert = arraylist.toString(); 

    System.out.println("CONVERTED STRING: " + convert); 

    String[]splited_game_result = convert.trim().split("[\\[:,\\]]"); 

    System.out.println(" AFTER SPLITING TO ARRAY: " + "\n" + splited_game_result[0]); 

    Integer[] final_result = new Integer[splited_game_result.length]; 

    int g = 0; 

    for(String fsgr : splited_game_result) 

{final_result [g] = Integer.parseInt (fsgr); g ++;}

System.out.println("INTEGER ELEMENT ON INDEX 0: " + "\n" + final_result[1]);  
+3

:

for(String fsgr : splited_game_result) { String fsgrTrim = fsgr.trim(); if (!fsgrTrim.isEmpty()) { final_result[g] = Integer.parseInt(fsgrTrim); g++; } } 

또는 시도 - 캐치 절을 추가 할 수 있습니다. 아무도 이것을 읽지 않을 것입니다. – glennsl

+0

그냥 입력이 무엇이고 출력이되어야한다고 말하십시오. 코드를 따르는 것이 불가능합니다 :/ –

+0

코드를 복사하고 직접 포맷을 시도했습니다. 나는 포기 했어. –

답변

0

는, 예외는 소스의 맨 끝에서 발생합니다. 그것은 NumberFormatException: For input string: ""라고합니다. 아래 소스 참조 :

for(String fsgr : splited_game_result) 
{ final_result[g] = Integer.parseInt(fsgr); g++;} 

이유는 배열을 분할하는 데 사용되는 일반 expession 저자에 있습니다
["", "4", "7", " 2", "0", " 2", "4", " 400", " 500", " 400", " 300", " 500", " 400", " 300"]

문제가 있다는 것입니다 :

String[]splited_game_result = convert.trim().split("[\\[:,\\]]"); 

그것은 문자열의 다음과 같은 배열을 생산을 Integer.parseInt이 필요합니다. string that contain parsable integer

가능한 공작 기계 운드, 당신의 fsgr이 빈 문자열이 아닌 및 공백을 포함하지 않는 확인하기 위해 if condition을 추가하는 것입니다 : 당신은 당신의 코드를 읽을하게 고려해야

for(String fsgr : splited_game_result) { 
    try { 
     final_result[g] = Integer.parseInt(fsgr); 
     g++; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
0

아직 무엇을 하려는지 모르겠지만 예외는 여기 있습니다. 빈 문자열을 파싱하고 숫자 앞에 공백을 파싱하려고합니다. 논리에 대한 의견을 말하십시오. (풋의 중간에. 위치로 처음과 마지막 printlns를 사용)

for (String fsgr : splited_game_result) { 
    try { 
     final_result[g] = Integer.parseInt(fsgr); 
     g++; 
    } catch(Exception e2) { 
     System.out.println("Exception = ["+ fsgr + "]"); 
    } 
} 

출력 궁금해 모두에게

CONVERTED STRING: [4:7, 2:0, 2:4, 400, 500, 400, 300, 500, 400, 300] 
AFTER SPLITING TO ARRAY: 

Exception = [] 
Exception = [ 2] 
Exception = [ 2] 
Exception = [ 400] 
Exception = [ 500] 
Exception = [ 400] 
Exception = [ 300] 
Exception = [ 500] 
Exception = [ 400] 
Exception = [ 300] 
INTEGER ELEMENT ON INDEX 0: 
7