Java 移除支架和空字符串

Java 移除支架和空字符串,java,Java,代码的最终结果是能够将字符串数组解析为整数数组,但正如您所看到的,我得到了一个异常。我尝试拆分[and]符号,但当我调用数组的第一个(0)元素splited_game_result[0]时,它什么也不返回。这里的解决方案是什么?我试着用修剪法 String[] ca_po_pe = {"4:7","PAUSE","2:0","1:3 PINE","PAUSE","CANCEL","2:4","0:5 PINE","PAUSE","CANCEL"}; String canc_p

代码的最终结果是能够将字符串数组解析为整数数组,但正如您所看到的,我得到了一个异常。我尝试拆分[and]符号,但当我调用数组的第一个(0)元素splited_game_result[0]时,它什么也不返回。这里的解决方案是什么?我试着用修剪法

    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)

我仍然不知道你想做什么,但这是你的例外。您正在分析一个空字符串,并试图分析该数字之前的空格。为你的逻辑添加注释

for (String fsgr : splited_game_result) {
    try {
        final_result[g] = Integer.parseInt(fsgr);
        g++;
    } catch(Exception e2) {
       System.out.println("Exception = ["+ fsgr + "]");
    }
}
输出(在输出的中间。使用第一个和最后一个println作为位置)


对于每一个好奇的人来说,例外是在源代码的最后提出的。它表示输入字符串的
NumberFormatException:“
”。见以下资料来源:

for(String fsgr : splited_game_result)
{ final_result[g] = Integer.parseInt(fsgr); g++;}
原因在于用于拆分数组的常规Expression author:

String[]splited_game_result = convert.trim().split("[\\[:,\\]]");
它生成以下字符串数组:
[,“4”,“7”,“2”,“0”,“2”,“4”,“400”,“500”,“400”,“300”,“500”,“400”,“300”]

问题是
Integer.parseInt
需要

可能的解决方法是添加
if条件
,以确保您的
fsgr
不是空字符串且不包含空格:

for(String fsgr : splited_game_result) {

    String fsgrTrim = fsgr.trim();

    if (!fsgrTrim.isEmpty()) {
        final_result[g] = Integer.parseInt(fsgrTrim);
        g++;
    }
}
或添加try-catch子句:

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

你应该考虑让你的代码可读。没有人会通读这篇文章。只要说出什么是输入,什么应该是输出。代码无法遵循:/I我试图复制您的代码并手动格式化。我放弃了。我格式化了代码,但我没有一个小时的时间来决定你要做什么。顺便问一下,你想做什么?
for(String fsgr : splited_game_result) {

    String fsgrTrim = fsgr.trim();

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