我的问题是当它是负数时,我无法正确计算 int 的长度。第二个问题是,当 int 数字小于 10 位时,如果函数不能忽略最后一位,知道如何解决这个问题吗?int number = -123456789;int length = (int) (Math.log10(number) + 1);System.out.println("Variable length is: " + length + " digits \nThis is: " + number);if (number <= -1) { System.out.println("We have negative variable"); String negative = Integer.toString(number); System.out.println(negative); if (negative.substring(10, 11).isEmpty()|| negative.substring(10, 11).equals("") || negative.substring(10, 11) == "" || negative.substring(10, 11).equals(null) || negative.substring(10, 11) == null) { System.out.println("Nothing"); } else { String separate_10 = negative.substring(10, 11); System.out.println("Last digit (10): " + separate_10); int int_10 = Integer.parseInt(separate_10); byte result = (byte) int_10; } String group = "Existing result is: " + result; System.out.println(group);}这是当我有 -1234567890 十位数时的结果:变量长度为:0 位 这是:-1234567890 我们有负变量 -1234567890 最后一位 (10):0 现有结果为:0这是当我有 -123456789 九位数时的结果:变量长度为:0 位 这是:-123456789 我们有负变量 -123456789线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:11 at java.lang.String.substring(String.java:1963) at demo_place.main(demo_place.java:17)
1 回答
Helenr
TA贡献1780条经验 获得超3个赞
String 的索引从 开始0,所以当您这样做时;
negative.substring(10, 11)
第 11 个索引超出范围,因为最后一个字符位于索引 10,即'9',您可以使用;
negative.charAt(negative.length() - 1)
在不对任何索引值进行硬编码的情况下获取最后一个字符。
要获得负整数的长度,只需执行negative.length() - 1, 即可'-'从图片中获取字符。
要不就;
int getIntLength(int integer) {
String intStr = Integer.toString(integer);
return intStr.length() + (integer < 0 ? -1 : 0);
}
无论是负数还是正数都可以获得长度
添加回答
举报
0/150
提交
取消