0

与えられた数値入力から最長の昇順の部分文字列を読み取るプログラムを作成しようとしています。

(例: 入力 = "43123" 出力 = "123")

ループの編集を終了しましたが、プログラムはコンパイルされず、最後から 2 番目の閉じ括弧の「return ステートメントがありません」と言及し続けます。

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 ループの外側で return が必要です。したがって、else ステートメント内で asc を返す代わりに、ループの外で返します。

于 2013-03-17T23:55:40.290 に答える
0

@Ali Alamiri は正しいです。n の長さが 0 の場合、for ループに入ることはないため、戻り値はありません。@Ali Alamiri は、回答のクレジットを受け取る必要があります

于 2013-03-17T22:32:47.850 に答える