请教java高手,内出溢出怎么办??急吖!!!

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:50:35
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class D{
public static void main (String args [])
{

int a,b;

int counter=0;
double c;
double d=0;

JTextArea outputTextArea = new JTextArea();
outputTextArea.setText( "ten\ttwo" );

for(int number1 = 1;number1 <= 2;number1++){

do{
a=number1/2;
b=number1%2;

c=b*Math.pow(10,counter);
d=d+c;
counter++;
number1=a;
}
while(a>0);

outputTextArea.append(number1+"\t"+d+"\n");
}

JOptionPane.showMessageDialog(null,outputTextArea,
"Result",JOptionPane.PLAIN_MESSAGE);

Sys

你这是个死循环,运行结果是不断地添加字符到outputTextArea中
注意看do-while循环,而且只看do语句中的第一句和最后一句:

开始时number1 = 1,进入do-while循环:
a开始为number1除2等于0(因为是整数运算,所以1除以2等于0),而do的最后一句将a赋给number1,这时候number1等于0。接下来while判断a>0不成立,于是退出do-while循环,执行append方法;

接下来执行for循环的number1++,number1由0变成1,<=2成立,于是for循环继续……如此重复,直到OutOfMemoryError的发生。

(1)number1 = 1;
(2)a = number1 / 2 = 1 / 2 = 0;
(3)number1 = a = 0;
(4)a > 0 (false,do-while循环退出);
(5)执行append;
(6)number1++ ( =1);
(7)number1 <= 2 (true);
(8)重复第一步

fgfhgh