2016-12-16 73 views
-2

對於這個程序,我努力在return方法(「notString」)中創建一個for循環。我試圖讓程序要求一個名字六次;但是,我收到一個錯誤,告訴我要添加一個返回值,它位於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 ; 
     } 
    } 

} 
+0

如果你看看你的代碼,你會發現它是在for循環中無條件返回的 - 什麼是循環的意義? –

+0

您是否想要實際記錄六個名字,或者您打算允許多達六次嘗試進行某個輸入? –

+0

我打算從掃描儀上接受多個輸入。 –

回答

0

有兩個方面對這一問題。

第一個方面是Java編譯器告訴你,它「認爲」你的方法有很多方法可以在不做顯式返回的情況下結束。

事實上,事實並非如此。有可能證明循環之後的代碼(如寫入)無法達到。

然而,根據JLS 代碼的可達性,該編譯器以實現所需規則,所以能夠達到該方法的結束。因此,必須是 a return循環後的語句。

但更深的一面是,你所做的是錯誤的。你寫的將不會要求串六次,因爲它是必需的。

實際上做的只是詢問一次後「放棄」。 return聲明表示「立即返回」。並且在您放置return聲明的位置,如果某物是true或者它是false,那麼您將返回「NOW」即總是

如果你要問六倍,那麼:

  • 沒有從環路的中間返回,或者
  • 動循環的主要方法。

我不能告訴你哪個是正確的方法,因爲你對程序應該/要求做什麼的解釋是不完整的。

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 
} 
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); 
     } 

    } 
}