0

ここで大きな問題を抱えています。基本的に私がしなければならないことは、ユーザーに数字を入力させることです...プログラムは数字を受け取り、それが負か正かを読み取ります。負の場合、以前に偽だった negval を真に設定して先に進みます。次に、番号を再度読み取り、先行ゼロをチェックし、存在する場合は削除します。次に、残っているものを取り、文字列が声に出して最大文字数より少ないかどうかを確認します。そうである場合は、スペースをカウントするためにループし、スペースをカウントしながら、それらが digits であることも確認します。文字列が許容される文字数よりも大きい場合、プログラムはチェックを停止し、0 を出力します。

私の問題は、文字列の長さが有効な長さであっても、0 の出力にジャンプし続けることです。

これが私が持っているものです。

 String snum;
System.out.print("Please enter a number here : ");
snum = console.next();
System.out.println(getIntnum(" The number entered was: "+snum));

その他の一般的なもの

    final String maxInt = "2147483648";
    final String minInt = "-2147483648";
    boolean negval = false;

    int n;
    int count;
    int num = 1;
    int value;

    if(snum.charAt(0) == '-' || snum.charAt(0) == '+')
     {
      if(snum.charAt(0) == '-')
      {
        negval = true;
      }
      else
      {
        snum = snum.substring(1, snum.length());
      }
    }

    while (snum.charAt(0) == '0')
    {
      snum = snum.substring(1, snum.length());
    }

    n = snum.length( );
    if (n < 10)
    {
      count = 0;
      if (count < n)
      {
        if (Character.isDigit(snum.charAt(count)))
          count++;
      }
    }


     else
       {
     num = 0;


    }
     if(maxInt.compareTo(snum) >= 0 && minInt.compareTo(snum) <= 0)
     {
       num = Integer.parseInt(snum);
     }
     if(negval == true)
     {
       num = num * -1;
     }
     value = num;
     return value;
}

}
4

4 に答える 4

1

数値の比較と同じように機能しない文字列を比較しています。たとえば、"10"<は<"2"であるため、これは < および > であることを意味'1'します。'2'"-1""-2147483648""3""2147483647"

代わりに何をすべきかを提案することは困難です。なぜなら、あなたが持っているコードの半分を実行している理由が私には明らかではないからです。

try {
    return Integer.parseInt(s);
} catch (NumberFormatException ignored) {
    return 0;
}
于 2012-12-03T09:30:53.623 に答える
0

単に使用するInteger.parseInt(snum)

于 2012-12-03T07:54:18.547 に答える
0

あなたの主な問題は、数値を比較するために文字列比較を使用していることです。また、数値が正であることは既にわかっているため、minInt と比較する意味はあまりありません。最後に、maxInt の値が間違っています。

于 2012-12-03T07:55:25.907 に答える
0
final String maxInt = "2147483648";

MAX_INTです2147483647

次に、文字列比較を使用して数値を比較しないでください。次のように使用します。

        if (Integer.parseInt(maxInt) >= Integer.parseInt(snum)) {
            num = Integer.parseInt(snum);

        }
于 2012-12-03T08:04:20.907 に答える