Java 如何从while循环返回字符串输入?
在我的代码中,我让用户输入“标题数”。然后,我提示用户输入标题名称,直到它等于用户刚才输入的标题数量。我要做的是在调用main方法中的方法时返回标题名。但是,当我试图返回读取标题名的变量时,它无法被访问,因为它超出了循环。以下是该方法:Java 如何从while循环返回字符串输入?,java,while-loop,return,Java,While Loop,Return,在我的代码中,我让用户输入“标题数”。然后,我提示用户输入标题名称,直到它等于用户刚才输入的标题数量。我要做的是在调用main方法中的方法时返回标题名。但是,当我试图返回读取标题名的变量时,它无法被访问,因为它超出了循环。以下是该方法: public static String getTitles(){ Scanner numberOfTitles = new Scanner(System.in); System.out.println("Enter number of titl
public static String getTitles(){
Scanner numberOfTitles = new Scanner(System.in);
System.out.println("Enter number of titles: ");
int titlesAmount = numberOfTitles.nextInt();
int count = 1;
while (count <= titlesAmount){
Scanner titlesReader = new Scanner(System.in);
System.out.println("Enter title: ");
String titlesInput = titlesReader.next();
count++;
}
return titlesInput;
}
公共静态字符串getTitles(){
扫描仪编号标题=新扫描仪(System.in);
System.out.println(“输入标题数:”);
int titlesAmount=numberOfTitles.nextInt();
整数计数=1;
而(count如果要从方法返回多个字符串,则必须返回字符串列表:
public static List<String> getTitles() { ... }
公共静态列表getTitles(){…}
然后,在方法内部,只需添加所有要返回列表的字符串,并在末尾返回列表:
Scanner inputReader = new Scanner(System.in);
System.out.println("Enter number of titles: ");
int titlesAmount = inputReader.nextInt();
int count = 1;
List<String> titles = new ArrayList();
while (count <= titlesAmount){
System.out.println("Enter title: ");
titles.add(inputReader.next());
count++;
}
return titles;
Scanner inputReader=新扫描仪(System.in);
System.out.println(“输入标题数:”);
int titlesAmount=inputReader.nextInt();
整数计数=1;
列表标题=新的ArrayList();
而(count您需要返回字符串列表(或数组),而不是单个字符串
我改变了你的方法,这样你就可以大致了解我的意思。我不确定我的语法对于Java是否100%正确,但它应该能让你理解要点
public static List<String> getTitles(){
Scanner numberOfTitles = new Scanner(System.in);
System.out.println("Enter number of titles: ");
int titlesAmount = numberOfTitles.nextInt();
int count = 1;
List <String> titles = new ArrayList<String>();
while (count <= titlesAmount){
Scanner titlesReader = new Scanner(System.in);
System.out.println("Enter title: ");
String titlesInput = titlesReader.next();
titles.add(titlesInput);
count++;
}
return titles;
}
公共静态列表getTitles(){
扫描仪编号标题=新扫描仪(System.in);
System.out.println(“输入标题数:”);
int titlesAmount=numberOfTitles.nextInt();
整数计数=1;
列表标题=新的ArrayList();
while(count必须在方法范围内定义变量。如果要返回该变量,则不在while循环范围内。
最好不要使用直接字符串对象并在循环中操作它们,因为这会导致更多内存。最好根据您的选择使用StringBuilder
或StringBuffer
public static String getTitles(){
Scanner scanner = new Scanner(System.in);
System.out.println("Enter number of titles: ");
int titlesAmount = scanner.nextInt();
int count = 1;
StringBuilder sbReturn = new StringBuilder();
while (count <= titlesAmount){
System.out.println("Enter title: ");
sbReturn.append(scanner.next()).append(",");
count++;
}
return sbReturn.toString();
}
公共静态字符串getTitles(){
扫描仪=新的扫描仪(System.in);
System.out.println(“输入标题数:”);
int titlesAmount=scanner.nextInt();
整数计数=1;
StringBuilder sbReturn=新StringBuilder();
while(count为了使变量的作用域位于最外层,需要在while循环外部初始化字符串。编译器永远无法确定while循环语句内部的代码是否会执行(即使条件为true)因此它不会将循环块内的任何变量泄漏到外部块
除此之外,您还需要知道三件事。第一,您只需要一个Scanner对象来读取所有输入。第二,如果您想要返回一组字符串,在本例中是所有标题,您需要一个列表
对象作为返回类型。最后,每当您想要迭代x次时,都需要一个for循环比使用计数器变量的while循环更可读
我会像这样重写您的代码:
public static List<String> getTitles() {
List<String> titles = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
System.out.println("Enter number of titles: ");
int titlesAmount = sc.nextInt();
for (int i = 0; i < titlesAmount; i++) {
System.out.println("Enter title: ");
titles.add(sc.next());
}
return titles;
}
公共静态列表getTitles(){
列表标题=新的ArrayList();
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入标题数:”);
int titlesAmount=sc.nextInt();
对于(int i=0;i
返回字符串的方法只能返回一个字符串。您希望返回多个字符串。因此该方法应返回字符串数组(或列表)。请阅读有关阵列的教程:。此外,您需要一个扫描仪来读取所有内容。无需每次读取内容时都创建一个新的扫描仪。@VeselRomic,但我比您快了1分钟;)并修复了多扫描仪问题。这就是我打字速度慢的原因。:)@Takendarkk哦,我忘了。我更正了。感谢您的评论和代表:)