在向控制台显示输出时遇到问题

时间:2019-10-08 12:04:30

标签: java

我正在尝试将输入存储在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”,程序结束

执行。

3 个答案:

答案 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)

嘿,谢谢您的回答和帮助。这实际上是一个编译问题,我以错误的方式编译了软件包。现在正在工作。