簡體   English   中英

在java中打印數組中的每個單詞

[英]printing each word in an array in java

public class namePrinting 
{
    //each name in a series of names
    public String[] names = {"Hello", "My", "Name", "Is", "Jose"};

    //the method for putting names in 
    public static void printNames(String [] namesArray) 
    {
        //go through each String in the array and then print each
        for(int i = 0; i <= namesArray.length; i++)
        {
            System.out.println(namesArray[i]);
        }
    }
    //print the names in this specific array
    printNames(names[]);
}

我對 Java 很陌生,想知道我做錯了什么? 我只想遍歷數組中的每個字符串並打印每個字符串。 我認為不正確的部分在底部......是否有我忘記放入printNames的特定變量?

您的代碼包含多個錯誤:

  1. 您在靜態方法中使用names數組,但名稱本身不是靜態的。 從方法中刪除靜態,或向字段添加靜態。
  2. printNames(names[]); 是在班級級別,這是不可能的。 方法調用應該在方法或構造函數中。
  3. names[]作為參數輸入也無效。 這應該是printName(names)代替。
  4. <=應該是< 因為數組的長度為 5,但索引為 [0-4]。

嘗試這樣的事情(沒有靜態):

public class NamePrinter
{
    //each name in a series of names
    public String[] names = {"Hello", "My", "Name", "Is", "Jose"};

    //the method for putting names in 
    public void printNames(String [] namesArray) 
    {
        //go through each String in the array and then print each
        for(int i = 0; i < namesArray.length; i++)
        {
            System.out.println(namesArray[i]);
        }
    }

    public static void main(String[] a){
        NamePrinter namePrinter = new NamePrinter();

        //print the names in this specific array
        namePrinter.printNames(namePrinter.names);
    }
}

在線試一下。

或者使用靜態:

public class NamePrinter
{
    //each name in a series of names
    public static String[] names = {"Hello", "My", "Name", "Is", "Jose"};

    //the method for putting names in 
    public static void printNames(String [] namesArray) 
    {
        //go through each String in the array and then print each
        for(int i = 0; i < namesArray.length; i++)
        {
            System.out.println(namesArray[i]);
        }
    }

    public static void main(String[] a){
        //print the names in this specific array
        printNames(names);
    }
}

在線試一下。

  1. 改變:

    for(int i = 0; i <= namesArray.length; i++)

    到:

    for(int i = 0; i < namesArray.length; i++) ,

    因為最后一次迭代會導致ArrayIndexOutOfBoundsExceptionnames數組的長度等於 5,但最后一個索引等於 4 - 數組的索引從 0 開始)。

  2. printNames(names[])更改為printNames(names) ,因為您使用的語法不正確。

  3. 如果要在static方法中使用names數組,則該數組也應聲明為static ,另一方面,您可以從printNames()方法中刪除static關鍵字。

  4. 你不能像你那樣在類的主體中調用printNames(names) 它應該放在某個方法或初始化塊中(我很確定你應該把它放在public static void main(String args[])方法中。

要更正您的代碼,您必須:

  • main方法調用您的printNames方法
  • 將您的i <= namesArray.length更改為i < namesArray.length

你的代碼看起來像這樣:

public class namePrinting 
{
    public static void printNames(String [] namesArray)
    {
        for(int i = 0; i < namesArray.length; i++)
        {
            System.out.println(namesArray[i]);
        }
    }

    public static void main(String[] args) {
        String[] names = {"Hello", "My", "Name", "Is", "Jose"};
        printNames(names);
    }
}

在線試試吧!

但是為了簡化您的代碼,您可以使用 foreach 而不是 for loop :

public static void printNames(String [] namesArray)
{
    for (String name: namesArray) {
        System.out.println(name);
    }
}

在線試試吧!

如果您使用 Java 8 或 +,則可以像這樣使用 Stream Api:

public static void printNames(String [] namesArray)
{
    Arrays.stream(namesArray).forEach(System.out::println);
}

在線試試吧!

玩得開心 ;)

1 將printNames(names[]) to printNames(names)更改printNames(names[]) to printNames(names)

2 使用public static String[] names = {"Hello", "My", "Name", "Is", "Jose"}; 而不是public String[] names = {"Hello", "My", "Name", "Is", "Jose"};

3 使用for(int i = 0; i <= namesArray.length -1 ; i++)而不是for(int i = 0; i <= namesArray.length; i++)

暫無
暫無

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

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