JAVA语言中的运算符。

publicclassTest{publicstaticvoidmain(String[]args){bytei=1;while(true){System.out.pri... public class Test{

public static void main (String []args){
byte i = 1;
while (true){
System.out.println(i);
i *= 10;
if(i>100)
return;
}
}
}

1.这个程序中*=是什么意思?
2.怎么修改才能让它不是一个死循环
展开
 我来答
云中游民
2012-04-25 · TA获得超过602个赞
知道小有建树答主
回答量:697
采纳率:33%
帮助的人:619万
展开全部
1 i *= 10;相当于i = i*10;
2 把byte 型改成short或者int或者long,反正比byte大就行了。
追问
改了。。运行出来了。。

但是第二个我还是不太懂额-。- 为什么要这么改啊
追答
因为byte的最大值是127,而你100的byte型数据再乘以10就溢出了,达不到你 i>100 的条件,所以你也可以用4楼的办法 i==100 的方法
左手编码
2012-04-25 · TA获得超过756个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:352万
展开全部
在i *= 10这个表达式中,i是byte型,10是int型。在运算的时候会发生类型强制转换,即将int型的10转换为byte型。在这个过程会发生截位,10的低8位将会被截掉参与运算,而这8位在溢出后表示的是0.所以是死循环。改正的方法是把i定义成int型,即int =1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邗启3V
2012-04-25 · TA获得超过7271个赞
知道大有可为答主
回答量:1413
采纳率:100%
帮助的人:1398万
展开全部
I*=10
相当于 i = 1*10;

if(i>100)
return; 你这里有结束的语句啊 不会死循环啊
追问
运行的就是死循环啊-。-
追答
嗯  楼上对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8927dbe5b
2012-04-25 · TA获得超过448个赞
知道小有建树答主
回答量:1011
采纳率:100%
帮助的人:288万
展开全部
自乘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
7532890
2012-04-25
知道答主
回答量:7
采纳率:0%
帮助的人:1万
展开全部
把if(i>100)改成if(i=100)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式