用户输入null时如何退出循环

时间:2019-06-15 02:08:30

标签: java arrays while-loop

我需要编写一个程序,提示用户输入最多5个电影标题。用户按下Enter键即可退出输入并部分填充数组。

我尝试了这些页面中建议的许多解决方案。要么循环继续,要么出现布尔值/字符串转换错误。

public static void main(String[] args)
   {
      Scanner sc = new Scanner(System.in);
      String [] Movie = new String[5];
      String title;
      int count = 0;
      for(int i=0; i < Movie.length; i++) {
         System.out.println("Enter up to 5 Movie titles (enter null to exit)"); 
         while (sc.hasNextLine()) {
            if(sc.equals("")) {
               break;
            }
            title = sc.nextLine();
            Movie[i] = title;
            count++;
         }                  
      }      
      for(int i=0; i < Movie.length; i++) {
      System.out.println(Movie[i]);      
      }
   }

我希望程序输入代码,直到用户按下回车键,然后才能看到输入内容。

4 个答案:

答案 0 :(得分:3)

问题是您正在将Scanner对象与空String进行比较,这是错误的sc.equals("")。首先将输入读入String并检查是否为空

for(int i=0; i < Movie.length; i++) {
     System.out.println("Enter up to 5 Movie titles (enter null to exit)"); 
     while (sc.hasNextLine()) {
        title = sc.nextLine();
        if(title.equals("")) {
           break;
        }

        Movie[i] = title;
        count++;
     }                  
  } 

要仅打印数组,请使用Arrays.toString

System.out.println(Arrays.toString(Movie));

答案 1 :(得分:0)

您不应嵌套两个循环来读取输入,而是需要一个具有两个条件的循环。此计数必须小于Movies数组长度(遵循Java命名约定,应将其命名为movies),并且Scanner需要有另一行。我更喜欢String.isEmpty()String.equals("")。并且您的第二个循环应在count处停止(因为此后的条目可能为空白)。像

Scanner sc = new Scanner(System.in);
String[] movies = new String[5];
int count = 0;
for (int i = 0; i < movies.length && sc.hasNextLine(); i++) {
    System.out.println("Enter up to 5 Movie titles (enter null to exit)");
    String title = sc.nextLine();
    if (title.isEmpty()) {
        break;
    }
    movies[count] = title;
    count++;
}
for (int i = 0; i < count; i++) {
    System.out.println(movies[i]);
}

答案 2 :(得分:0)

import java.util.*;
public class MovieTitles
{
   public static void main(String[] args)
   {
      Scanner sc = new Scanner(System.in);
      String Movie[] = new String [10];
      for(int i = 0 ; i < Movie.length; i++) {
         System.out.println("Enter up to 10 Movie titles (enter null to exit). Title " + (i + 1));
         String title = sc.nextLine();
         if(title.matches("")) {
            break;            
        }else {
           Movie[i] = title;
        }
     }
      System.out.println(Arrays.toString(Movie)); 
   } 
}

答案 3 :(得分:0)

import java.util.*;
public class MovieTitles
{
   public static void main(String[] args)
   {
      Scanner sc = new Scanner(System.in);
      String Movie[] = new String [10];
      int count = 0;
      for(int i = 0 ; i < Movie.length; i++) {
         System.out.println("Enter up to 10 Movie titles (enter null to exit). Title " + (i + 1));
         String title = sc.nextLine();
         if(title.matches("")) {
            break;            
        }else {
           Movie[i] = title;
           count++;
        }
     }
      System.out.println("Movie Titles:\n");
      for(int j = 0 ; j < count; j++)         
      System.out.printf("%s\n", Movie[j]); 
   } 
}