java计算8+88+888+8888+.....前十项之和,请问怎么更改这个X为整数型再去相加减啊,求问各位大佬!!!
3个回答
2019-09-14
展开全部
错误一:首先char类型无法用 Integer.parseInt( )转换。不管是parseInt( )还是valueOf( ) 里面都是放String 类型的数据。
错误二:char a=0;这是个错误写法。权且认为它是对的,往下看,
错误三:在你的方法中 a 的值没有变过。在第一层循环中 x 永远等于 a+'8' ,进入第二层循环十次,那就是 8+8+8+8+8+8+8+8+8+8,外层再循环十次。权且认为都没问题,那么结果可能只是800.
隐藏错误四:int类型取值范围是 -2147483648~2147483647 ,当第十次循环 8888888888(十个8)已经不再int取值范围内,会报错。
修改后的写法:
@Test
public void test() {
BigInteger sum = new BigInteger("0");
String x = "";
for (int i = 0; i < 10; i++) {
x += '8';
// System.out.println(x);
sum = new BigInteger(x).add(sum);
}
System.out.println(sum);
}
追问
还在吗?我想问下在java的某个代码中求出了X,我怎么输出满足条件且最小的那个X呢?
追答
如果满足条件的数字有很多,是个数组,那么将数组排序,就可以输出最小的那个x了。
或者直接将满足条件的数字和上一个满足条件的做对比,保留最小的。当循环结束,你得到那个X就是最小的。
展开全部
因为 第 10 个元素 8,888,888,888 转换成 16 进制已经用到了 bit33,超过了 Int 型的范围。它们的和更是超过了 Int 型的范围。
所以,你应该把变量 sum 申明为 Long 型的才能正常使用。
所以,你应该把变量 sum 申明为 Long 型的才能正常使用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般是
long sum=0;
for(int i=0;i<10;i++)
sum+=sum*10+8;
象上面那样的写是不行的,即使是也字符串拼接,也类似于
long sum=0;
String s="";
for(int i=0;i<10;i++)
{
s+="8";
sum+=Long.parseLong(s);
}
long sum=0;
for(int i=0;i<10;i++)
sum+=sum*10+8;
象上面那样的写是不行的,即使是也字符串拼接,也类似于
long sum=0;
String s="";
for(int i=0;i<10;i++)
{
s+="8";
sum+=Long.parseLong(s);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询