TXTファイルからいくつかの単語を読み込もうとしていますが、このエラーが発生します。java.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です。何が間違っているのか分かりません。おそらく始めと終わりのインデックスを持つものでしょう...そのインデックスを修正する方法を知っていますか? plsは...おかげで...java.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です:-1
import java.util.ArrayList;
import java.io.*;
import java.util.*;
/**
* Write a description of class Zoznam here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Sklad
{
Tovar tovar;
ArrayList<Tovar> potrZoznam = new ArrayList<Tovar>();
String aDruh;
String aVaha;
String aKrajinaPôvodu;
String aCena;
int i;
// /**
// * Constructor for objects of class Zoznam
// */
// public Zoznam()
// {
//
// }
public int getSkladDlzka()
{
return potrZoznam.size();
}
public void pridajPotravinu(String paDruh, String paVaha, String paKrajinaPôvodu, String paCena) throws IOException
{
Tovar a1= new Tovar(paDruh, paVaha, paKrajinaPôvodu, paCena);
potrZoznam.add(a1);
}
public void nacitajZoSuboru()
throws IOException
{
FileReader fr = new FileReader("subor.txt");
BufferedReader in = new BufferedReader(fr);
String riadok, pom;
int i = 0;
System.out.print("\f");
while((riadok = in.readLine()) != null) {
aDruh = riadok.substring(0, riadok.indexOf('/'));
riadok = riadok.substring(riadok.lastIndexOf('/') + 1, riadok.length());
int x = 0;
riadok = riadok.substring(riadok.lastIndexOf('/') + 1, riadok.length());
////////////////////////////////
aKrajinaPôvodu = riadok.substring(0, riadok.lastIndexOf('/')); // error there
riadok = riadok.substring(riadok.lastIndexOf('/') + 1, riadok.length());
aCena = riadok.substring(0, riadok.lastIndexOf('/'));
riadok = riadok.substring(riadok.lastIndexOf('/') + 1 , riadok.length());
i++;
pridajPotravinu(aDruh, aVaha, aKrajinaPôvodu, aCena);
}
fr.close();
}
public void PridatDoSkladu() throws FileNotFoundException, IOException
{
String aDruh, aVaha, aKrajinaPôvodu, aCena, novyRiadok;
Scanner vstup = new Scanner (System.in);
System.out.println("\fPRIDAŤ DO Skladu:");
System.out.println("\nZadajte Druh:");
aDruh = vstup.nextLine();
System.out.println("\nZadajte Vahu: ");
aVaha = vstup.nextLine();
System.out.println("\nZadajte Krajinu Pôvodu: ");
aKrajinaPôvodu = vstup.nextLine();
System.out.println("\nZadajte Canu");
aCena = vstup.nextLine();
System.out.println("\f\nVami zadane údaje sú: \n" + aDruh + ", " + aVaha + ", " + aKrajinaPôvodu + ", " + aCena + ".");
novyRiadok = (aDruh + " " + aVaha + " " + aKrajinaPôvodu + ", " + aCena);
PrintWriter zapisdoskladu = new PrintWriter(new FileOutputStream("subor.txt",true));
zapisdoskladu.print(novyRiadok);
zapisdoskladu.println();
zapisdoskladu.close();
pridajPotravinu(aDruh, aVaha, aKrajinaPôvodu, aCena);
}
public void AktualizujSubor() throws FileNotFoundException, IOException
{
File frM = new File("subor.txt");
FileWriter fw = new FileWriter("subor.txt");
int a = getSkladDlzka();
for (int i =0; i<a ;i++)
{
String novyRiadok = (potrZoznam.get(i).getDruh() + " " + potrZoznam.get(i).getVaha() + " " + potrZoznam.get(i).getKrajinaPôvodu() + "," + potrZoznam.get(i).getCena());
PrintWriter zapisdoskladu = new PrintWriter(new FileOutputStream("sklad.txt",true));
zapisdoskladu.print(novyRiadok);
zapisdoskladu.println();
zapisdoskladu.close();
}
fw.close();
}
public void Vypis(int i)
{
System.out.printf("%-20d. %-20s %-30s %-10s ",i+1, potrZoznam.get(i).getDruh() + " " + potrZoznam.get(i).getVaha() + " " + potrZoznam.get(i).getKrajinaPôvodu() + "," + potrZoznam.get(i).getCena());
}
public void zoradPodlaCeny()
{
boolean Zamena;
do{
Zamena=false;
for (int i=0;i<potrZoznam.size()-1;i++)
{
if (potrZoznam.get(i).getCena().compareToIgnoreCase(potrZoznam.get(i+1).getCena())>0)
{
Tovar tovar = potrZoznam.get(i);
potrZoznam.set(i, potrZoznam.get(i+1));
potrZoznam.set(i+1, tovar);
Zamena=true;
}
}
} while (Zamena);
}
}
** line **はその例外を投げていますか? –
スタックトレースを含めることはできますか? – user123
私はコードでマークしました。^_ ^aKrajinaPôvodu= riadok.substring(0、riadok.lastIndexOf( '/')); –