我需要编写一个程序,提示用户输入最多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]);
}
}
我希望程序输入代码,直到用户按下回车键,然后才能看到输入内容。
答案 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]);
}
}