0

我正在尝试创建一个程序,该程序从任何给定的数字输入中读取最长的升序子字符串。

(例如输入=“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;
            }
        }
    }


}
4

2 回答 2

0

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

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

于 2013-03-17T23:55:40.290 回答
0

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

于 2013-03-17T22:32:47.850 回答