2013-03-17 110 views
0

我想創建一個程序,從任何給定的數字輸入中讀取最長的升序子字符串。升序substring編譯錯誤

(如輸入=「43123」輸出=「123」)

我已經完成編輯循環,而且程序不編譯,並保持一提的倒數第二個右括號「失蹤return語句」 。

我曾嘗試添加返回asc;並打破;但似乎都沒有工作。

以下是我的代碼:

import java.util.Scanner;   
public class Ascending{ 


    public static void main(String args[]){ 

     System.out.print("Enter a number = "); 

     //scan the input 
     Scanner in = new Scanner(System.in); 
     String n = in.nextLine(); 

     //print solution 
     System.out.println("output = " + itsAscending(n)); 


    } 

    public static String itsAscending(String n) { 

     int length = n.length();  

     for(int i = 0; i < length; i++) { 

      char first = n.charAt(i);  
       char next = n.charAt(i+1);  
      int f = (int)(first - 48);  
      int nx = (int)(next - 48);  

      String asc; 
      String works = ""; 

      if (f<nx) { 

       works = works + n.substring(i, i+2); 
       asc = works.substring(0, works.length()-1); 
       return asc; 
      } 

      else { 

       works = works + ""; 
       asc = works.substring(i, works.length()-1); 
       return asc; 
      } 
     } 
    } 


} 
+5

您提到了「編譯錯誤」,但沒有顯示它。請顯示您的錯誤文本,並通過註釋說明哪一行代碼會導致錯誤。另外,請通過使縮進一致來修復代碼的格式。適當的代碼格式通常會幫助你(和我們)調試你的程序。不正確的格式使你的代碼幾乎不可能讀取和解釋。 – 2013-03-17 22:00:37

+4

也許它抱怨''for'循環之後沒有返回(並且它不能證明其中的一個會遇到)。 – 2013-03-17 22:03:27

+0

好的。如果長度爲0,則循環根本不運行,因此需要結束返回。 – SJuan76 2013-03-17 22:05:39

回答

0

@Ali Alamiri是正確的,在情況下,n的長度爲0,所以你不會有一個返回值,你將永遠不會進入for循環。 @Ali Alamiri應該收到回答的積分

+0

現在我希望我把評論作爲答案:P – 2013-03-17 23:38:15

0

只要將我的評論作爲答案,以防某人面臨類似問題。

您需要在for循環之外返回。因此,不要在else語句中返回asc,而是將其返回到循環外部