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

PrintChar printA = new PrintChar('a',100);
PrintChar printB = new PrintChar('b',100);
PrintNum print100 = new PrintNum(100);

print100.start();
printA.start();
printB.start();
} class  PrintChar extends Thread
{
private  char charToPrint;
private  int times;

public PrintChar(char c,int t)
{
charToPrint=c;
times=t;
}
public void run()
{
for(int i=1;i<times;i++)
System.out.print(charToPrint);
}
}
class  PrintNum extends Thread
{
private  int  lastNum;
public PrintNum(int n)
{
lastNum=n;
}
public void run()
{
for(int i=1;i<lastNum;i++)
System.out.print(" "+i);
}
}
}请大家用最简短的代码,或者稍微修改下此程序,使其通过,并解释原因,50分求!

解决方案 »

  1.   

    public class Test3
    {
        public static void main(String[] args)
        {
            PrintChar printA = new PrintChar('a', 100);
            PrintChar printB = new PrintChar('b', 100);
            PrintNum print100 = new PrintNum(100);        print100.start();
            printA.start();
            printB.start();
        }    static class PrintChar extends Thread
        {
            private char charToPrint;
            private int times;        public PrintChar(char c, int t)
            {
                charToPrint = c;
                times = t;
            }        public void run()
            {
                for (int i = 1; i < times; i++)
                    System.out.print(charToPrint);
            }
        }
       static class PrintNum extends Thread
        {
            private int lastNum;
            public PrintNum(int n)
            {
                lastNum = n;
            }        public void run()
            {
                for (int i = 1; i < lastNum; i++)
                    System.out.print(" " + i);
            }
        }
    }
      

  2.   

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

    PrintChar printA = new PrintChar('a',100);
    PrintChar printB = new PrintChar('b',100);
    PrintNum print100 = new PrintNum(100);

    print100.start();
    printA.start();
    printB.start();
    }
    }
    class  PrintChar extends Thread
        {
    private  char charToPrint;
    private  int times;

    public PrintChar(char c,int t)
    {
    charToPrint=c;
    times=t;
    }
    public void run()
    {
    for(int i=1;i<times;i++)
    System.out.print(charToPrint);
    }
    }
    class  PrintNum extends Thread
    {
    private  int  lastNum;
    public PrintNum(int n)
    {
    lastNum=n;
    }
    public void run()
    {
    for(int i=1;i<lastNum;i++)
    System.out.print(" "+i);
    }
    }
    这样才行。一个类中不能包含另外一个类。一个.java文件中可以有多个类。
      

  3.   

    static class  PrintChar extends Thread
    static class  PrintNum extends Thread
    或者
    PrintChar printA = new Test3().new PrintChar('a',100);
    PrintChar printB = new Test3().new PrintChar('b',100);楼上注意内隐类。
      

  4.   

    内隐类添加static,说明此内隐类不依赖于Test3类的某个实例而存在。可以直接使用Test3.PrintChar引用,因为是在Test3类内部,可以省略些直接用PrintChar来new一个实例。不添加static的话,那你首先得new一个Test3的实例,在此基础上new一个与此实例相关的PrintChar。
      

  5.   

    ApplicationException() 
    这位兄弟的方法是最简短的,但能解释下原因么,你说的一个类中不能包含另外一个类,这是什么意思,那内部类又是什么?
    能否详细点地解说说?(我初学者,麻烦了)
      

  6.   

    ApplicationException 的改法是可行的,但他的解释是不对的。其实我觉得,kevinliuu 的改法才是“最简短的”。flyingghost 已经把原因说得很清楚了。
      

  7.   

    public static void main(String [] args)
    {
    Test3 t = new Test3() ;
    Test3.PrintChar printA = t.new PrintChar('a',100);
    Test3.PrintChar printB = t.new PrintChar('b',100);
    Test3.PrintNum print100 = t.new PrintNum(100);

    print100.start();
    printA.start();
    printB.start();
    }
      

  8.   

            static class  PrintChar extends Thread
            static class PrintNum extends Thread
      

  9.   

    ...
    他们不是内部类怎么能放在Test3类里呀 ..