簡體   English   中英

創建線程時Java錯誤

[英]Error in java when creating Threads

創建線程時Java錯誤。 該錯誤在“ MainApp”中,其中RandomCharacterThread為錯誤。 線程t1期待一個字符,而我卻給它一個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)
    {

    }
}

}

您的“構造函數”將char作為參數; 您正在傳遞String 你想做類似的事情

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

注意單引號而不是雙引號,這使它成為char常量而不是帶有一個字符的String

我用引號說“構造函數”是因為您實際上沒有一個:您有一個方法返回與類同名的void。 刪除“空”,你會很好。 構造函數根本沒有返回類型:

public RandomCharacterThread(char x) 
{
    ...

這是一個非常常見的新手錯誤,但大多數人只會犯一次!

RandomCharacterThread的構造函數期望使用char類型的參數,當您傳遞字符串時會引發錯誤。
這是正確的版本。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM