Java arrays: Which one of the following declarations causes a compiler error?

Java Programming Declarations and Access Control Difficulty: Easy
Choose an option
  • A
    int[] scores = {3, 5, 7};
  • B
    int[][] scores = {2,7,6}, {9,3,45};
  • C
    String cats[] = {"Fluffy", "Spot", "Zeus"};
  • D
    boolean results[] = new boolean[] {true, false, true};
  • E
    Integer results[] = {new Integer(3), new Integer(5), new Integer(8)};

Answer

Correct Answer: int[][] scores = {2,7,6}, {9,3,45};

Explanation

Introduction / Context:Two-dimensional array initialization in Java requires proper nesting of braces to form rows. This question focuses on identifying the malformed declaration among otherwise valid array declarations.

Given Data / Assumptions:

  • Single- and multi-dimensional arrays are being declared.
  • Boxed types and primitive arrays are mixed to test syntax understanding.

Concept / Approach:A two-dimensional array literal uses nested braces: new int[][] { {row1}, {row2} } or simply { {row1}, {row2} } when used with a declaration. Flat lists without nested braces are illegal for 2D arrays.

Step-by-Step Solution:

Option A creates a 1D int array with three elements → valid.Option B attempts to declare a 2D int array but uses two comma-separated flat lists instead of nested row braces → invalid syntax.Option C declares a 1D String array using a literal → valid.Option D creates a new boolean array using an initializer list → valid.Option E declares an Integer array with boxed values → valid.

Verification / Alternative check:Correct form for B would be int[][] scores = { {2,7,6}, {9,3,45} };

Why Other Options Are Wrong:They all follow legal Java syntax for array declarations and initializations.

Common Pitfalls:Forgetting inner braces for multi-dimensional initializers; mixing up new int[] { ... } versus size-based creation.

Final Answer:int[][] scores = {2,7,6}, {9,3,45};

Discussion & Comments
No comments yet. Be the first to comment!
Join Discussion