我试图在每次循环运行结束时只运行nextLine(),这样它每次迭代都会以新行开始循环,但是在最后一次运行结束时,我不希望它运行nextLine()因为它跳过了我程序其余部分所需的数据。我该如何解决这个问题?
String hasInt = fileIn.nextLine();
while(Character.isDigit(hasInt.charAt(0)))
{
data = hasInt.split(",");
info = Integer.parseInt(data[0]);
def = data[1];
case = data[2];
free = data[3];
Case newCase = new Case(info, def, case, free);
miner.addCase(newCase);
hasInt = fileIn.nextLine();
}
将它全部组合到for循环似乎可以工作,这让我一路走过循环,似乎工作,但现在在方法的开头,它陷入无限循环
while(fileIn.hasNextLine())
{
if(fileIn.hasNext("[A-Za-z]+"))
{
答案 0 :(得分:1)
do {
String hasInt = fileIn.nextLine();
if (!Character.isDigit(hasInt.charAt(0)) {
break;
}
// rest of your code here
} while(true);
答案 1 :(得分:1)
您可以尝试将语句合并到for循环中:
for(
String hasInt = fileIn.nextLine();
Character.isDigit(hasInt.charAt(0));
hasInt = fileIn.nextLine()
) {
data = hasInt.split(",");
info = Integer.parseInt(data[0]);
def = data[1];
case = data[2];
free = data[3];
Case newCase = new Case(info, def, case, free);
miner.addCase(newCase);
}
答案 2 :(得分:0)
我不确定它会有多干净但是;看来你可以在while循环后使用hasInt获取你不想跳过的值。
答案 3 :(得分:0)
您好,您不会丢失数据,因为您最后读取的数据是在hasInt变量中。所以在while循环之后使用它。
String hasInt = fileIn.nextLine();
while(Character.isDigit(hasInt.charAt(0)))
{
data = hasInt.split(",");
info = Integer.parseInt(data[0]);
def = data[1];
case = data[2];
free = data[3];
Case newCase = new Case(info, def, case, free);
miner.addCase(newCase);
hasInt = fileIn.nextLine();
}
//use the hasInt variable here to get the last read data...