Java 如何在返回方法中使用for循环?
对于这个程序,我正在努力在返回方法(“notString”)中创建For循环。我试着让程序问一个名字六次;但是,我得到一个错误,它告诉我添加一个返回值,它位于for循环内 这是我必须从中创建一个程序的语句:给定一个字符串,返回一个新字符串,其中前面添加了“not”。但是,如果字符串已经以“not”开头,则返回未更改的字符串Java 如何在返回方法中使用for循环?,java,return,Java,Return,对于这个程序,我正在努力在返回方法(“notString”)中创建For循环。我试着让程序问一个名字六次;但是,我得到一个错误,它告诉我添加一个返回值,它位于for循环内 这是我必须从中创建一个程序的语句:给定一个字符串,返回一个新字符串,其中前面添加了“not”。但是,如果字符串已经以“not”开头,则返回未更改的字符串 import java.util.*; public class practice1 { public static void main(String[] args) {
import java.util.*;
public class practice1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String answer= notString(sc);
System.out.println(answer);
}
public static String notString(Scanner sc){
for(int i=0; i<=6;i++){
System.out.println("Input Name: ");
String name= sc.nextLine();
if(name.startsWith("not")){
return name;
}else
return "not"+name ;
}
}
}
import java.util.*;
公开课实习1{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串应答=notString(sc);
System.out.println(应答);
}
公共静态字符串notString(扫描程序sc){
对于(int i=0;i是),您必须为方法notString()提供一个返回语句,该语句承诺在方法签名中返回字符串。以下程序将编译并运行(尽管我不确定它是否是您的最终程序):
修改程序:
import java.util.*;
public class Practice1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String answer= notString(sc);
System.out.println(answer);
}
public static String notString(Scanner sc) {
String answer = "";
for(int i=0; i<=6; i++){
System.out.println("Input Name: ");
String name= sc.nextLine();
if(name.startsWith("not")){
return name;
} else {
return "not" + name;
}
}
return answer; // Problem 2: missed a return statement
} // Problem 1: missed a closing brace
}
import java.util.*;
公开课实习1{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串应答=notString(sc);
System.out.println(应答);
}
公共静态字符串notString(扫描程序sc){
字符串答案=”;
对于(inti=0;i,这个问题有两个方面
第一个方面是Java编译器告诉您,它“认为”有一些方法可以在不执行显式返回的情况下结束方法
事实并非如此,有可能证明循环后的代码(如编写的)无法到达
但是根据编译器需要实现的JLS代码可达性规则,有可能到达方法的末尾。因此,循环后必须有一个return
语句
但更深层次的问题是,你所做的是错误的,你所写的不会像要求的那样要求字符串六次
实际上,只要问一次,它就会“放弃”。return语句说的是“立即返回”。在你放置return语句的地方,如果某个东西是真的,或者是假的,你就会返回“现在”;也就是说,总是这样
如果你想问六次,那么:
- 不要从循环中间返回,或者
- 将循环移动到main方法
我无法告诉您哪种方法是正确的,因为您对程序应该/需要执行的操作的解释不完整。该程序在语法和构造上都是错误的。在这种情况下,没有必要使用方法并传递scanner对象。如果您只想在6个输入同时打印为让我做这个
import java.util.*;
public class practice1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
for(int i=0; i<=6;i++){
String temp = sc.nextLine();
String answer = temp.startsWith("not")?temp : "not" + temp;
System.out.println(answer);
}
scanner.close();
}
}
import java.util.*;
public class practice1 {
public static void main(String[] args) {
String[] names = new String[6];
Scanner sc=new Scanner(System.in);
for(int i=0; i<=6;i++){
String temp = sc.nextLine();
String answer = temp.startsWith("not")?temp : "not" + temp;
names[i] = answer;
}
scanner.close();
for(String name : names){
System.out.println(name);
}
}
}
import java.util.*;
公开课实习1{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
对于(int i=0;ii如果您查看您的代码,您将看到它在for循环中无条件地return
ing-有一个循环的意义是什么?您希望实际记录六个名称,还是计划允许对某个输入进行最多六次尝试?我计划从扫描仪获取多个输入。因此它应该存储字符串数组中的名字?是的,我想我应该这么做。