虽然循环不增加java [关闭]
Posted
技术标签:
【中文标题】虽然循环不增加java [关闭]【英文标题】:While loop not incrementing java [closed] 【发布时间】:2022-01-09 14:36:23 【问题描述】:我刚开始学习java。我的 while 循环似乎没有增加。这是我在 try and catch 中的 while 循环的 sn-p:
File file = new File("Reservation.txt");
Scanner sc = new Scanner(file);
sc.useDelimiter(",");
try
while (sc.hasNext())
i = 0;
newRes[i] = readRec;
fuN2 = sc.next();
newRes[i].fullName = fuN2;
readRec.setFirstName(fuN2);
System.out.println("\n" + newRes[i].fullName);
cn2 = sc.next();
newRes[i].contact = cn2;
readRec.setContact(cn2);
System.out.println(newRes[i].contact);
dt2 = sc.next();
newRes[i].date = dt2;
readRec.setDate(dt2);
System.out.println(newRes[i].date);
pa2 = sc.nextInt();
newRes[i].pax = pa2;
readRec.setPax(pa2);
System.out.println(newRes[i].pax);
bt2 = sc.next();
newRes[i].bday = bt2;
readRec.setBirthday(bt2);
System.out.println(newRes[i].bday);
ch2 = sc.nextInt();
newRes[i].child = ch2;
readRec.setChild(ch2);
System.out.println(newRes[i].child);
se2 = sc.nextInt();
newRes[i].senior = se2;
readRec.setSenior(se2);
System.out.println(newRes[i].senior);
pr2 = sc.nextInt();
newRes[i].j = pr2;
readRec.setPrice(pr2);
System.out.println(newRes[i].j);
dpr2 = sc.nextInt();
newRes[i].k = dpr2;
readRec.setDisPrice(dpr2);
System.out.println(newRes[i].k);
sc.next();
sc.nextLine();
i++;
catch (NoSuchElementException e)
sc.close();
System.out.println("===============================");
每当我尝试打印出变量“i”时,它总是会打印出 0,但它总是会正确且按顺序读取文件。
更新:我从 while 循环中删除了 i 声明,答案应该在下面。
【问题讨论】:
如果您指的是i
的值,那是因为您在 inside 循环中声明了它
请尝试将您的代码简化为重现问题的最小示例!另外,所有这些变量是什么:i
,fuN2
,newRes
,readRec
,cn2
,dt2
,pa2
,bt2
,ch2
,@987654332 @, dpr2
?名称不会泄露任何东西,类型也不清楚(如果它们仅在循环中使用,您应该在使用它们的地方声明它们)。让您的问题更容易理解,您将有更好的机会得到答案!
@JeroenSteenbeeke 不,鉴于这应该是 Java 代码,i
没有在那个 sn-p 中声明。
@Amadán 感谢您指出这一点。但确实发生的是,它在每次迭代开始时被设置为 0。
lol 我被一大堆神秘的缩写弄得不知所措,以至于我真的错过了这个。谈论:“干净的代码”...... :-)
【参考方案1】:
您在循环内部做的第一件事是将i
设置为0 ...
所以i
在循环结束时递增,但在下一个循环中恢复。
但是在打印i
时,当您在循环执行后打印时,您应该始终得到 1,而不是 0。
试试这个:
var i = 0;
File file = new File( "Reservation.txt" );
Scanner sc = new Scanner( file );
sc.useDelimiter(",");
try
while (sc.hasNext())
// i = 0; Get rid of this line!!!
newRes [i] = readRec;
fuN2 = sc.next();
newRes [i].fullName = fuN2;
…
dpr2 = sc.nextInt();
newRes [i].k = dpr2;
readRec.setDisPrice( dpr2 );
System.out.println( newRes [i].k );
sc.next();
sc.nextLine();
++i;
catch( NoSuchElementException e )
sc.close();
System.out.println("===============================");
【讨论】:
看来我已经修好了,谢谢:) 没有赞?没有“正确的解决方案”标记? ?var i = 0
?你确定这是 Java 吗?
@0009laH - Jepp,那是 Java!不确定它是什么时候引入的(我认为是 11 年),但在 Java 17 中,var
肯定是该语言的一部分。
@tquadrat 我觉得自己老了...以上是关于虽然循环不增加java [关闭]的主要内容,如果未能解决你的问题,请参考以下文章