升序substring编译错误

问题描述:

我想创建一个程序,从任何给定的数字输入中读取最长的升序子字符串。升序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

@Ali Alamiri是正确的,在情况下,n的长度为0,所以你不会有一个返回值,你将永远不会进入for循环。 @Ali Alamiri应该收到回答的积分

+0

现在我希望我把评论作为答案:P – 2013-03-17 23:38:15

只要将我的评论作为答案,以防某人面临类似问题。

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