java - if/else 方法运行不正常
问题描述
我想创建一个方法,vbcim
如果 value 不在,则显示为 0,如果versenyzok.txt
找到 value,则显示实际值。我误解了一些东西,并且该Feltolt
方法无法正常运行。
它应该列出来自文本文件的结果。如果未找到第 4 个值,则将其设置为 0,如果找到,则将其列出
package vizsgamintaa;
import java.io.File;
import java.io.FileNotFoundException;
//import java.io.PrintStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
//import java.util.logging.Level;
//import java.util.logging.Logger;
public class VizsgaMintaA {
static SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");
static Scanner sc= new Scanner(System.in);
public static void main(String[] args) throws ParseException, FileNotFoundException {
ArrayList<Versenyzo> versenyzok = new ArrayList<>();
Feltolt(versenyzok);
Kiir(versenyzok);
}
private static void Feltolt(ArrayList<Versenyzo> versenyzok) throws ParseException{
Versenyzo v;
File f = new File("versenyzok.txt");
try {
Scanner scan = new Scanner(f, "iso-8859-2");
while (scan.hasNextLine()) {
String sor = scan.nextLine();
String[] adatok = sor.split(";");
if (adatok.length == 3) {
v = new Versenyzo();
v.nev = adatok[0];
v.szuletes = df.parse(adatok[1]);
v.csapat = adatok[2];
if (adatok[3].length()==0 ) {
v.vbcim = 0;
}
else {
v.vbcim = Integer.parseInt(adatok[3]);
}
} else {
v = new Versenyzo (adatok[0],df.parse(adatok[1]),adatok[2],Integer.parseInt(adatok[3]));
}
versenyzok.add(v);
}
} catch (FileNotFoundException ex) {
System.out.println("Nincs meg a fájl.");
}
}
public static void Kiir(ArrayList<Versenyzo>versenyzok){
for (Versenyzo f : versenyzok){
System.out.println(f.toString());
}
}
}
class Versenyzo {
String nev,csapat;
Date szuletes;
int vbcim;
SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");
@Override
public String toString(){
return "Versenyzo:" +nev + "Született:" + df.format(szuletes)+"Csapata:"+ csapat + "Vb címek:" + vbcim;
}
public Versenyzo(String nev, Date szuletes, String csapat, int vbcim) {
this.nev = nev;
this.szuletes = szuletes;
this.csapat = csapat;
this.vbcim = vbcim;
}
public Versenyzo(){
}
}
这
else {
v = new Versenyzo (adatok[0],df.parse(adatok[1]),adatok[2],Integer.parseInt(adatok[3]));
}
部分是某种方式不起作用。ArrayIndexOutOfBoundsException
它说。
解决方案
首先你检查:
if (adatok.length == 3)
在else
你认为理所当然的部分length
中,至少是4
,但似乎不是。
也许它小于2
,所以ArrayIndexOutOfBoundsException
当你尝试访问时会得到adatok[3]
。
你应该改成这样:
if (adatok.length == 3) {
//......
} else if (adatok.length > 3) {
//......
} else {
//......
}
推荐阅读
- c# - 如何在 3d 相机中移动具有不同距离的两个对象但使其看起来正交
- firebase - 类型“工作”没有成员“下标”
- c# - 我如何隐藏/显示警报或 div 代码
- java - 使用 Java 8 压缩太多 if 子句
- android - 如何使用自定义词从谷歌助手启动我们安装的应用程序
- python - 从 Pandas 数据框中的列表中删除 NaN
- c++ - 是否可以在实时游戏引擎中实现光线追踪?
- vb.net - 使用 VB.Net 将数据从表加载到 Windows.Form.RibbonComboBox
- javascript - 如何在状态更改后停止 useEffect 运行?
- python - 如何更改参数传输以避免 Visualize_saliency(keras.vis) 中的 TypeError