我正在尝试将输入存储在Indoor_games数组中,并将其输出到屏幕上,但是当我执行代码时,它在接受1个值后突然结束执行。
package games;
import java.util.*;
import java.lang.*;
class Indoor{
String name;
Indoor(String name){
this.name = name;
}
public void display(){
System.out.println(this.name);
}
}
class Outdoor{
String name;
Outdoor(String name){
this.name = name;
}
public void display(){
System.out.println(this.name);
}
}
class Slip20{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String name;
System.out.println("Enter number of Players in Indoor Games: ");
int size = sc.nextInt();
Indoor[] indoor_games = new Indoor[size];
for(int i=0;i<size;i++){
name = sc.next();
indoor_games[i] = new Indoor(name);
}
for(int i=0;i<size;i++)
indoor_games[i].display();
}
}
添加了nextLine的更新代码,但仍然存在相同的问题:
class Slip20{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String name;
System.out.println("Enter number of Players in Indoor Games: ");
int size = sc.nextInt();
sc.nextLine(); //To consume the newline character
Indoor[] indoor_games = new Indoor[size];
for(int i = 0 ; i < size ; i++){
name = sc.nextLine();
indoor_games[i] = new Indoor(name);
}
for(int i = 0 ; i < size; i++)
indoor_games[i].display();
}
}
输出(命令行)
D:\ Docs Dump \ School stuff \ JAVA \ Java slips> java games.Slip20
输入室内游戏的玩家人数:
3
Neeraj
D:\ Docs Dump \学校资料\ JAVA \ Java票据>
如您所见,扫描仪仅接受“ Neeraj”,程序结束
执行。
答案 0 :(得分:0)
只需将sc.next()替换为sc.nextLine()
答案 1 :(得分:0)
这是因为需要nextLine()。但是请注意使用它,文档说:
将此扫描器前进到当前行之后并返回输入 *被跳过了。
此方法返回当前行的其余部分,不包括任何行 *分隔符结尾。该位置设置为下一个开始 *行。
您应该在before循环之前使用的知识将解决问题。
Scanner sc = new Scanner(System.in);
System.out.print("Enter number of Players in Indoor Games: ");
int size = sc.nextInt();
Indoor[] indoor_games = new Indoor[size];
sc.nextLine();
for (int i = 0; i < size; i++) {
System.out.println("Please write a name:");
indoor_games[i] = new Indoor(sc.nextLine());
}
答案 2 :(得分:0)
嘿,谢谢您的回答和帮助。这实际上是一个编译问题,我以错误的方式编译了软件包。现在正在工作。