3

私の方法の1つに問題があります。私は大学で Java を学んでいるので、簡単なことについては詳しくないかもしれません。以下は、式を追加するために作成されたメソッドです。私が遭遇している問題はx = x.substring.(1, x.length() - 1);、次のような例外が発生している場所で見つかりました。

Exception in thread "main" java.lang.NullPointerException

それが何を意味するのか、および/またはそれを修正する方法がわかりません。あなたが私を正しい方向に向けることができれば、それは素晴らしいことです. ありがとう。

public static int adder(String x){
    int total = 0;
    x = x.substring(1, x.length() - 1);
    sopln(x);
    String[] nums = x.split("\\+");
    for(int i = 0; i < nums.length; ++i){
        if(nums[i].charAt(0) == ' ' || nums[i].charAt(nums[i].length()-1) == ' '){
            sopln("ERROR: Excess whitespace identified.");
            nums[i] = nums[i].trim();
        }
        nums[i] = nums[i].replaceAll(" ", "");
        if(nums[i].charAt(0) == '-')
            total -= Integer.parseInt(nums[i]);

        else
            total += Integer.parseInt(nums[i]);
    }
    return total;

}
4

3 に答える 3

0

私が直面している問題はどこにあるのかx=x.substring.(1,x.length() - 1);

これは、ある時点でadderである引数で呼び出していることを意味しますnull。それが、その時点で NPE を取得できる唯一の方法です。

引数が null である場所と理由を見つけて、修正します。

(これは明示的なnullである可能性がありますが、初期化されていないフィールド、または何かを示すために a を返す何らかのメソッドからのものである可能性が高くなりますnull。たとえば、リーダーが EOF 位置に達したときにBufferedReader.readLine()戻ります。)null

于 2013-09-22T21:37:36.593 に答える
0

おそらく、文字列 x が null であり、実際には文字列のオブジェクトに設定されていないことを意味します。

どのようにメソッドを呼び出していますか?

次のようなハードコードされた文字列で呼び出すと発生しますか

int num = adder("string checking in");

そうでない場合、コードの上流のどこかで、adder メソッドに渡す String 変数は null です。

于 2013-09-22T21:38:47.080 に答える
0

adder(the_string) を呼び出すときに null 値を渡しています。ここで、the_string は null です。

于 2013-09-22T21:40:20.807 に答える