簡體   English   中英

錯誤:不兼容的類型:int 無法轉換為 int[] 和其他錯誤

[英]error: incompatible types: int cannot be converted to int[] & other errors

import java.util.Scanner;

public class BasketBallChart {
    public static void main (String[] args) {
        Scanner reader = new Scanner(System.in);

        System.out.print("Enter the first names of the 5 players: ");
        String nameString = reader.nextLine();
        String[] name = nameString.split(" ");

        for (int i = 0; i < 5; i++) {
            System.out.print("Enter points earned by " +name[i]+ ": ");
            int pL = reader.nextInt();
            int p[i] = pL;
        }

        for (int j = 0; j < 5; j++) {
            System.out.println(p[j]);
        }
    }
}

所以基本上第一部分要求用戶輸入 5 個玩家的名字(帶空格),然后我將其拆分為一個字符串數組。

我試圖制作的 for 循環,這樣我就不必放置 5 個單獨的 println 和輸入,所以它的行數會更少,看起來更干凈。 所以我試圖讓每個點都與 for 循環的運行次數相關聯,例如,如果“i”為 0,並且我在第一個輸入中輸入 Oliver 作為名字,name [0] 將是 Oliver,然后我希望它就像您在第一個 for 循環中輸入的點數將是 p[0] 因此與 Oliver 相關聯,因此它們都是 0。

我使用第二個 for 循環進行測試。

我不斷收到錯誤,我不知道為什么。

將您的代碼更改為

String[] name = nameString.split(" ");
int p[] = new int[5];

for (int i = 0; i < 5 && i < name.length; i++) {  // also check name array length
        System.out.print("Enter points earned by " +name[i]+ ": ");
        int pL = reader.nextInt();
        p[i] = pL;
}

這會將p數組的聲明移動到for循環的之前(和外部)。 我還添加了代碼來檢查循環不超過name數組的長度。

正如@RolandIllig 下面所建議的那樣,數組p最好命名為points ,而name arrays 最好命名為names - 提供反映其用法的變量名稱有助於更容易理解代碼。

在這里,您的代碼有兩個問題:

1)您需要在循環之前聲明 p 數組,例如int[] p = new int[5];

2) 然后在循環內部為每個數組元素賦值,如p[i] = pL;

3) 為了安全起見,請檢查name數組的長度,例如if (name.length == 5)

    public static void main(final String[] args) {

    final Scanner reader = new Scanner(System.in);

    System.out.print("Enter the first names of the 5 players: ");
    final String nameString = reader.nextLine();
    final String[] name = nameString.split(" ");
    if (name.length == 5) {
      final int[] p = new int[5];
      for (int i = 0; i < 5; i++) {
        System.out.print("Enter points earned by " + name[i] + ": ");
        final int pL = reader.nextInt();
        p[i] = pL;
      }

      for (int j = 0; j < 5; j++) {
        System.out.println(p[j]);
      }
    }

  }

暫無
暫無

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

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