Java 如何在返回方法中使用for循环?

Java 如何在返回方法中使用for循环?,java,return,Java,Return,对于这个程序,我正在努力在返回方法(“notString”)中创建For循环。我试着让程序问一个名字六次;但是,我得到一个错误,它告诉我添加一个返回值,它位于for循环内 这是我必须从中创建一个程序的语句:给定一个字符串,返回一个新字符串,其中前面添加了“not”。但是,如果字符串已经以“not”开头,则返回未更改的字符串 import java.util.*; public class practice1 { public static void main(String[] args) {

对于这个程序,我正在努力在返回方法(“notString”)中创建For循环。我试着让程序问一个名字六次;但是,我得到一个错误,它告诉我添加一个返回值,它位于for循环内

这是我必须从中创建一个程序的语句:给定一个字符串,返回一个新字符串,其中前面添加了“not”。但是,如果字符串已经以“not”开头,则返回未更改的字符串

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-有一个循环的意义是什么?您希望实际记录六个名称,还是计划允许对某个输入进行最多六次尝试?我计划从扫描仪获取多个输入。因此它应该存储字符串数组中的名字?是的,我想我应该这么做。