-4

やあ、仲間のスタックオーバーフローファーズ、

私は書きました。

public class testing
{
    public String subString(int start, int end) 
    {   
        char[]content = new char[]{0,1,2,3,4,5,6,7,8,9};
        String output ="";
        for (int i = 0; i < content.length;i++)
        {
            if (content[i] >= start && content[i] < end)
            {
                output = output + content[i];
            }
        }
        return output;
    }
    /**
     * @param args
     */

    public static void main(String[] args)
    {

        testing test1 = new testing();

        System.out.println( test1.subString(1,2));
    }

}

戻り値:

[] 

どのように分割しようとしても、正しい数の小さな正方形が返されるように機能します。配列要素を文字列に入れようとしているからだと思いますか?

戻り値も文字列である必要があります。

誰でも私を助けることができますか?

PS私はこれのための機能があることを知っています:)

4

5 に答える 5

0

私が理解しているように、ここには2つの異なる問題があります.1つ目は、文字の配列に関するものです。char[]content = new char[]{0,1,2,3,4,5,6,7,8,9}; があります。おそらく ascII 値 0 ~ 9 を示します。あなたが探しているものではなく、具体的には char[]content = new char[]{'0','1','2','3','4','5','6','7', '8','9'}; あなたが欲しいものです

次に、正しい範囲内にあるかどうかを確認する if ステートメントが単に正しくないため、値ではなくインデックスが正しい範囲内にあるかどうかを確認する必要があります: if (i >= start && i < end)

これらの問題により、アルゴリズムが機能します。ただし、この一般的な問題には、はるかに優れた解決策があります。おそらく、配列の内容全体を本当に調べる必要があるかどうかを考えていますか?

于 2013-09-11T07:30:51.570 に答える
0

コンテンツの初期化は、あなたが思っていることをしないかもしれません。

char[]content = new char[]{0,1,2,3,4,5,6,7,8,9};

必要な出力が数値である場合 (奇妙な ascii 文字ではない場合)、配列文字を文字として初期化する必要があります。つまり、次のようにアポストロフィを付けて配置します。

char[]content = new char[]{'0','1','2','3','4','5','6','7','8','9'};

文字の内部表現は数値であるため、コードでエラーが発生することはありません。

于 2013-09-11T07:37:04.947 に答える