如何在return方法中使用for循环?

时间:2016-12-16 01:25:37

标签: java return

对于这个程序,我正在努力在return方法中创建一个for循环(" notString")。我试图让程序六次要求一个名字;但是,我得到一个错误,它告诉我添加一个返回值,它在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 ;
      }
    }

}

3 个答案:

答案 0 :(得分:0)

是的,你必须为方法notString()提供一个return语句,它承诺在方法签名中返回一个String。以下程序将编译并运行(虽然我不确定它是否是您的最终程序):

修改后的程序:

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
}   

答案 1 :(得分:0)

这个问题有两个方面。

第一个方面是Java编译器告诉你它&#34;认为&#34;你的方法可以在不做明确返回的情况下结束。

实际上,情况并非如此。有可能证明无法达到循环后的代码(如写入的那样)。

但是,根据编译器需要实现的JLS 代码可达性规则,可以到达方法的末尾。因此,必须在循环之后 return语句。

但更深层次的是你正在做的事情是错误的。您所写的内容将不会要求输入六次字符串,因为它需要这样做。

它实际上会做的是&#34;放弃&#34;在问了一次之后。 return语句说&#34;现在返回&#34;。在您放置return语句的位置,您将返回&#34; NOW&#34;如果某事是true或者是false;即总是

如果你想问六次,那么:

  • 不要从循环中间返回,或
  • 将循环移动到main方法。

我无法告诉你哪种方法是正确的,因为你对程序假设/要求做的解释是不完整的。

答案 2 :(得分:0)

程序在语法和构造方面都是错误的。在这种情况下,没有必要使用方法并传递扫描仪对象。如果您只想打印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);
        }

    }
}