我有这个小程序,我一直在努力,它应该询问用户一个名字,它打印100次,然后它会询问是否肯定会给另一个名字再做一次。然而,这对我有用;当我被问到是否要再次这样做时,会打印出很多空白行,任何人都可以给我一个提示,说明为什么会这样?
import java.util.*;
class Uke44{
public static void main(String[]args){
Scanner input=new Scanner(System.in);
boolean lokke=true;
while(lokke){
System.out.println("Vennligst oppgi navn: ");
String navn=input.nextLine();
for(int i=0; i<100; i++){
System.out.println(navn);
}
System.out.println("Gi et nytt navn? j/n: ");
char valg = input.next().charAt(0);
if(valg=='j'){
System.out.println("Vennligst oppgi navn: "); //The problem must lie around here I think.
navn=input.nextLine();
for(int i=0; i<100; i++){
System.out.println(navn);
}
}else{
lokke=false;
}
}
}
}
答案 0 :(得分:2)
你有100次重复的bucle也是如此。
for(int i=0; i<100; i++){
System.out.println(navn);
}
所以,如果在第一个之后,你选择'j'它将打印导航200次,一个用于第二个bucle,另一个时间从while(lokke)
再次输入
要解决您的问题,请删除第二个代码,您的代码将显示:
import java.util.*;
class Uke44{
public static void main(String[]args){
Scanner input=new Scanner(System.in);
boolean lokke=true;
while(lokke){
System.out.println("Vennligst oppgi navn: ");
String navn=input.nextLine();
for(int i=0; i<100; i++){
System.out.println(navn);
}
System.out.println("Gi et nytt navn? j/n: ");
char valg = input.next().charAt(0);
if(valg!='j'){
lokke=false;
}
}
}
}
答案 1 :(得分:2)
char valg = input.next().charAt(0);
将此更改为
char valg = input.nextLine().charAt(0);
因为当您提供j
并按Enter键时,navn=input.nextLine();
内的if
正在消耗该按键并为您分配navn
。此navn
现在再次打印100次,这就是您认为很多空行。