-1
if (!pos[1].equals("")) {
String name = pos[1];
System.out.println(name);
int p = 0;
for (int i = name.length() - 1; i>0; i--){
if (name.charAt(i)==' ') {
p = i;
break;
}
System.out.println(p);
rank[1] = Integer.parseInt(name.substring(p).trim());
}
}
、int型のPは、IFブロック内Iとして設定されている場合。ただし、ifブロックの外側にアクセスすると、値はのままで、if条件にはiの値は設定されません。ifブロックの変数の値を設定します。アクセス値は、外部ブロックコードで
'p'が' if'ブロックの外にある変数であると仮定されている場合、 'if'ブロックの中で宣言するべきではありません。 – khelwood
私は、最も可能性の高いシナリオは、 'if'ブロックが入力されていないということです(あるいは、' i = 0'のときに起こるでしょう)スコープの問題は、このような不正なフォーマットではデバッグが非常に難しく、 'if'ブロック内にあるものやそのための' for'ループを知ることは容易ではありません。 'if'ブロックと' if'ブロックの後にのみ 'p'をループ内で印刷している場合、それは決して変更されません。 –
より長い名前のために値' 0'を持つ複数の行がありますか? _every_ 'i'のために' p'を出力し、おそらく例外を引き起こす 'Integer.parseInt(...)'を呼び出します(_first_文字はスペースではないと仮定します)。 _after_は内部ではなくループです。 – Thomas