升序命令子串编译错误

时间:2013-03-17 21:59:46

标签: java if-statement for-loop compiler-errors 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;
            }
        }
    }


}

2 个答案:

答案 0 :(得分:0)

@Ali Alamiri是对的,如果n的长度为0,你将永远不会进入for循环,因此你将没有返回值。 @Ali Alamiri应该收到答案的分数

答案 1 :(得分:0)

只需将我的评论作为答案,以防有人遇到类似的问题。

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

之外