0

我想设置int old的值int new,但是在第一个while循环int old中必须在之前定义int new,这意味着int new它还不存在。所以int old不能得到 的值int new

我如何提取这种情况并int old = 0在第一个循环中定义(例如)。我没有找到合适的函数,因为每个带有 int new 的 if 循环都会引发异常,因为 int new 不存在。我该如何处理?

    while(true) {
        try {
            int iold = inew;
            int inew = input.read();

            if (inew!=-1 && iold != -1) {
              text = tf.getText();
              tf.setText(text+(char)inew);
            }
            if (inew != -1 && iold = -1) {
             text = tf.getText();
             tf.setText(""+(char)inew);
            }
            Thread.sleep(100);
         } catch(Exception x) {
              x.printStackTrace();
         }
         repaint();    
    }
4

3 回答 3

1

将 int old 声明为您的成员变量或在 while 循环之前。

int old = 0;
while(condition){
   // your codes
}
于 2013-07-08T15:20:58.780 回答
1

简单地做

    int inew = 0; //Or any default value
    while(true){
      try{

        int iold=inew;

        inew=input.read();

        if (inew!=-1 && iold!=-1)
        {
          text=tf.getText();
          tf.setText(text+(char)inew);
        }
        if (inew!=-1 && iold=-1)
        {
          text=tf.getText();
          tf.setText(""+(char)inew);
        }

        Thread.sleep(100);
      }
      catch(Exception x){
          x.printStackTrace();
      }

      repaint();    
    }
于 2013-07-08T15:26:51.947 回答
0

只需声明int inew = 0外部while子句,如下所示:

int inew = 0;
while(true)
{
  try{

    int iold=inew;

    inew=input.read();

    if (inew != -1) {
        text = tf.getText();
        if(iold != -1) {
            tf.setText(text+(char)inew);
        }
        else {
            tf.setText(""+(char)inew);
        }
    }
    Thread.sleep(100);
  }
  catch(Exception x){x.printStackTrace();}
  repaint();    
}

第一个循环,iold将得到值 0。我也优化了你的代码。

于 2013-07-08T15:37:28.513 回答