创建线程时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)
{
}
}
}
答案 0 :(得分:3)
你的“构造函数”以char
为参数;你传递的是String
。你想做一些像
Thread t1 = new Thread (new RandomCharacterThread('1'));
请注意单引号而不是双引号,这使得它成为char
常量,而不是带有一个字符的String
。
我在引号中说“构造函数”,因为你实际上没有:你有一个方法返回与该类同名的void。删除“无效”,你会很好。构造函数根本没有返回类型:
public RandomCharacterThread(char x)
{
...
这是一个非常常见的新手错误,但大多数人只会做一次!
答案 1 :(得分:0)
类RandomCharacterThread
的构造函数期望char类型的参数,当你传递一个字符串时会抛出错误。
这是正确的版本。
Thread t1 = new Thread (new RandomCharacterThread('1'));