0

创建线程时java中的错误。错误出现在“MainApp”中,而 RandomCharacterThread 是错误。线程 t1 期待一个 char 而我给它一个 int 值。这就是导致错误的原因。我添加了注释以使社区的代码更清晰。

//Main class.
//program to display random numbers and characters using threads.
public class MainApp 
{

    public static void main(String[] args)
    {
        new MainApp().start();
    }
    public void start()
    {
        Thread t1 = new Thread (new RandomCharacterThread("1"));
        t1.start();

    }

}


//RandomCharacterThread.
//Imports.
import java.util.Random;
//=====================================================================
public class RandomCharacterThread implements Runnable
{
//Variables.
    char letter;
    int repeats;
    Random rand = new Random();
//Constructor
//=====================================================================
public void RandomCharacterThread(char x)
{
    letter = x;
    repeats = rand.nextInt(999);
}
public void run()
{
    try
    {
        for(int i = 0;i < repeats; i++)
        {
            System.out.println("Character: " + letter);
        }

    }
    catch(Exception e)
    {

    }
}

}
4

2 回答 2

3

您的“构造函数”将 achar作为参数;你正在传递一个String. 你想做类似的事情

    Thread t1 = new Thread (new RandomCharacterThread('1'));

注意单引号而不是双引号,这使它成为一个char常量而不是String一个字符。

我用引号说“构造函数”是因为你实际上没有:你有一个方法返回与类同名的 void。删除“空白”,你会很好。构造函数根本没有返回类型:

public RandomCharacterThread(char x) 
{
    ...

这是一个很常见的新手错误,但大多数人只会犯一次!

于 2012-04-29T18:48:04.943 回答
0

类的构造RandomCharacterThread函数需要 char 类型的参数,当你传递一个字符串时,它会抛出错误。
这是正确的版本。

Thread t1 = new Thread (new RandomCharacterThread('1'));
于 2012-04-29T18:55:05.180 回答