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