0

我在这里遇到了一个大问题。基本上我要做的是让用户输入一个数字......然后程序会取这个数字,读取它是负数还是正数。如果为负,则将先前的错误 negval 设置为 true 并继续。然后它再次读取数字,检查前导零,如果有任何它删除它们。然后它需要剩下的内容并检查字符串是否小于最大的大声字符数,如果是,则循环计算空格,同时计算空格它还确保它们是数字。如果字符串大于允许的字符数,程序停止检查并打印 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

您的主要问题是您使用字符串比较来比较数字。此外,由于您已经知道该数字是正数,因此将其与 minInt 进行比较没有多大意义。最后,您的 maxInt 值错误。

于 2012-12-03T07:55:25.907 回答
0

只需使用Integer.parseInt(snum)

于 2012-12-03T07:54:18.547 回答
0
final String maxInt = "2147483648";

MAX_INT2147483647

其次,不要使用字符串比较来比较数字。像这样使用它:

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

        }
于 2012-12-03T08:04:20.907 回答