Topic: 学习线程中碰到的怪问题

  Print this page

1.学习线程中碰到的怪问题 Copy to clipboard
Posted by: gleamyshadow
Posted on: 2006-06-02 22:20

在学习线程的时候,我写了一个缓慢显示文字的代码如下:
----------------------------------------------------------------------------------------
class Wenzi extends Thread{
  String[] s=new String[4]; //X1
    s[0]=new String("缓");
    s[1]=new String("慢");
    s[2]=new String("打");
    s[3]=new String("印"); //X2
  public void run(){
    for(i=0;i<=6;i++){
      System.out.print(s[i]);
      try{
        sleep(1000);
      }catch(InterruptedException ie){}
    }
  }
  public static void main(String[] args){
    Wenzi wz=new Wenzi();
    wz.start();
  }
}
----------------------------------------------------------------------------------------
在编译的过程出现错误提示如下:
----------------------------------------------------------------------------------------
E:\C\JAVA\myjava\A14_2.java:3: 需要 ']'
    s[0]=new String("缓");
^
E:\C\JAVA\myjava\A14_2.java:3: 需要 <标识符>
    s[0]=new String("缓");
^
E:\C\JAVA\myjava\A14_2.java:4: 需要 ']'
    s[1]=new String("慢");
^
E:\C\JAVA\myjava\A14_2.java:4: 需要 <标识符>
    s[1]=new String("慢");
^
E:\C\JAVA\myjava\A14_2.java:5: 需要 ']'
    s[2]=new String("打");
^
E:\C\JAVA\myjava\A14_2.java:5: 需要 <标识符>
    s[2]=new String("打");
^
E:\C\JAVA\myjava\A14_2.java:6: 需要 ']'
    s[3]=new String("印");
^
E:\C\JAVA\myjava\A14_2.java:6: 需要 <标识符>
    s[3]=new String("印");
^
8 错误
------------------------------------------------------------------------------------
看错误提示,我以为是数组定义有错误,我就把代码中定义数组的部分X1行到X2行直接复制另一个文件中,但是可以正常通过编译和运行,我不知道是为什么了,请大家帮忙看一下

2.Re:学习线程中碰到的怪问题 [Re: gleamyshadow] Copy to clipboard
Posted by: PrimeJava
Posted on: 2006-06-03 00:17


class Wenzi extends Thread{
String[] s = {"缓", "慢", "打", "印"};

public void run(){
for(int i = 0; i < 4; i++){
System.out.print(s[i]);
try{
sleep(1000);
}catch(InterruptedException ie){}
}
}
public static void main(String[] args){
Wenzi wz=new Wenzi();
wz.start();
}
}

3.Re:学习线程中碰到的怪问题 [Re: gleamyshadow] Copy to clipboard
Posted by: gleamyshadow
Posted on: 2006-06-03 23:32

谢谢,象你这样的确是可以通过编译和运行,但我就是搞不懂为什么同样的代码在另一个文件可以正常通过编译,而在这个文件里不行,可以告诉我吗

4.Re:学习线程中碰到的怪问题 [Re: gleamyshadow] Copy to clipboard
Posted by: zhc_cnjava
Posted on: 2006-06-06 08:06

class Wenzi extends Thread{
String[] s=new String[4]; //X1
s[0]=new String("缓");
s[1]=new String("慢");
s[2]=new String("打");
s[3]=new String("印"); //X2
public void run(){

在类的定义中,不能把赋值语句写到类的定义中,在这里,可以把字符串数组s的初始化放到某一个method中,或者用String[] s = {"缓", "慢", "打", "印"};的形式对s进行直接初始化.

5.Re:学习线程中碰到的怪问题 [Re: gleamyshadow] Copy to clipboard
Posted by: guaqingqing1314
Posted on: 2006-06-06 10:55

"在类的定义中,不能把赋值语句写到类的定义中,"
楼上说的不懂是什么意思呀,我是菜鸟:),能不能详细点呀?

6.Re:学习线程中碰到的怪问题 [Re: guaqingqing1314] Copy to clipboard
Posted by: why
Posted on: 2006-06-06 11:11

guaqingqing1314 wrote:
"在类的定义中,不能把赋值语句写到类的定义中,"
楼上说的不懂是什么意思呀,我是菜鸟:),能不能详细点呀?

實在沒有甚麼值得詳細講說的Embaressed

class Wenzi extends Thread{
String[] s=new String[4]; //X1
/* 把赋值语句写到类的定义中
s[0]=new String("缓");
s[1]=new String("慢");
s[2]=new String("打");
s[3]=new String("印");
*/
...
public static void main(String[] args){
/* 把字符串数组s的初始化放到某一个method中
s[0]=new String("缓");
s[1]=new String("慢");
s[2]=new String("打");
s[3]=new String("印");
*/
Wenzi wz=new Wenzi();
wz.start();
}
}

7.Re:学习线程中碰到的怪问题 [Re: gleamyshadow] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-06-06 11:25

s[0]=new String("缓");
s[1]=new String("慢");
s[2]=new String("打");
s[3]=new String("印");
他的意思是,以上语句不要写在方法的外面,比如:
class exam{
String s = new s[4];
//每个字符对象初始化操作,不要放在方法外面
s[0]=new String("缓");
s[1]=new String("慢");
s[2]=new String("打");
s[3]=new String("印");

public void setString(){
...//那些语句最好不要放在方法的外面,而已经放在这里,当然,方法的名字随便你取
}
}

8.Re:学习线程中碰到的怪问题 [Re: gleamyshadow] Copy to clipboard
Posted by: guaqingqing1314
Posted on: 2006-06-06 21:55

我只是想知道为什么不能放在类内方法外?


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923