ファイルのデータを読みながら、私はこのような質問をしたサブストリングを使用して、私は何が起こっているかわからないんだけど、私はので、ここで別の問題が発生したが行く:昨夜
私のインストラクターは、プロジェクトに私のクラスそのプログラムを与えていますファイルを読み込み、各文字を読み取り、各行にあるヒット、アウト、ウォーク、およびハエの量を表示します。私はこのトピックについて私のoriginal questionにいくつかの情報を掲載しました。 私は、プログラムを稼働させるチャンスをより良くするためにコードを書き直しました。私は部分文字列が何であるかを知ったとトークンについてもう少し、このプログラムと一緒に来た:
import java.util.Scanner;
import java.io.*;
public class BaseballStats
{
public static void main(String[]args) throws IOException
{
Scanner fileScan, lineScan;
String fileName;
int oCount = 0, hCount = 0, sCount = 0, wCount = 0;
Scanner scan = new Scanner(System.in);
System.out.print("Enter the name of the input file: ");
fileName = scan.nextLine();
fileScan = new Scanner(new File(fileName));
while (fileScan.hasNext())
{
lineScan = new Scanner (fileName);
lineScan.useDelimiter(",");
String input = lineScan.nextLine();
int point =(input.indexOf(","));
String name = input.substring(0,point);
String records = input.substring(point,input.length());
for (int i = 0; i < records.length(); i++)
{
if (records.charAt(i) == 's')
sCount++;
else if (records.charAt(i) == 'o')
oCount++;
else if (records.charAt(i) == 'h')
hCount++;
else if (records.charAt(i) == 'w')
wCount++;
}// end of for loop
System.out.printf("Name: %s. Hits: %d. Outs: %d. Walks: %d. Sacrifice flies: %d.", name, hCount, oCount, wCount, sCount);
System.out.println();
}//end of while loop
}//end of main
}// end
プログラムが正常に動作が、私はSTATS.DAT(読みことになっているファイル)に入力した後、
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at BaseballStats.main(BaseballStats.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:271)
これは、25行目に指し、
String name = input.substring(0,point);
ラインです:私は、次の例外エラーが発生します。私はこれで困惑しています、何かが欠けていますか?
注:元の質問に関するAdamskiの提案を読んでいます。私はそれに追いつこうとしましたが、私がJavaに新しいので、カプセル化、特にセッターとゲッターメソッドを理解するのが苦労しています。私のクラスで説明されている次の章まで、彼らを一人ままにしておくことが最善であると考えました。
'int point =(input.indexOf( "、"));'あなたが '入力'の部分文字列を入力しようとすると、 'ポイント'が何を解決しているかを見てください。 –
教授フックス? – Kevin