java计算8+88+888+8888+.....前十项之和,请问怎么更改这个X为整数型再去相加减啊,求问各位大佬!!!

我自己可能写的有问题,我也不知道,但是是这个题目就是了。。... 我自己可能写的有问题,我也不知道,但是是这个题目就是了。。 展开
 我来答
匿名用户
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就是最小的。
lu_zhao_long
2019-09-14 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:2608万
展开全部
因为 第 10 个元素 8,888,888,888 转换成 16 进制已经用到了 bit33,超过了 Int 型的范围。它们的和更是超过了 Int 型的范围。
所以,你应该把变量 sum 申明为 Long 型的才能正常使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2019-09-14 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
一般是

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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式