簡體   English   中英

如何調整此代碼以輸入和打印數字列表?

[英]How Can this code be adjusted to input and print a list of numbers?

我正在嘗試創建一個程序,該程序允許用戶將數字輸入到名為“ numArray”的數組中,但是一旦用戶將數字輸入到數組中,就會引發異常。 如何解決?

import java.util.Scanner;

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

        System.out.println("How many nums would you like to enter? ");
        int n = in.nextInt();
        System.out.println("Enter " + n + " nums");
        int[] numArray = new int[n];

        for(int i = 0; i <= n; i++)
        {
            int index = in.nextInt();
            System.out.print(numArray[index]);
        }
    }
}

如果用戶插入足夠大的數字/負數,則沒有index索引。 通過實際的循環變量解決這個問題i是這樣的:

for(int i = 0; i <= n; i++) {
    numArray[i] = in.nextInt();
    System.out.print(numArray[i]);
}

問題在於您沒有將數據存儲在陣列中的任何位置。

for(int i = 0; i <= n; i++)
{
    int index = in.nextInt();
    System.out.print(numArray[index]);
}

每次遍歷數組時,都將輸入存儲到變量index 從那里,您嘗試在該索引處顯示數組中的值。 這可能會導致一些問題。

1)您尚未將數字放入此數組中,因此數組中的每個值都將為0。要解決此問題:

numArray[i] = in.nextInt();

2)如果有人輸入的數字大於數組的大小,則會得到IndexOutOfBoundsException 我不認為您試圖以此方式進行操作,但這就是您的代碼當前正在嘗試進行的操作。

有3個問題:-

1)從0開始使用i <n

2)嘗試將輸入值添加為數組中的索引。

3)在輸入時打印出值,這會給您帶來混亂,最好在單獨的循環中完成,但是我還是把它留給了您,或者最好使用println而不是print

嘗試這個:-

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

        System.out.println("How many nums would you like to enter? ");
        int n = in.nextInt();
        System.out.println("Enter " + n + " nums");
        int[] numArray = new int[n];

        for(int i = 0; i < n; i++)
        {

           numArray[i] = in.nextInt();
           System.out.println(numArray[i]);
        }

    }

首先,它應該是i<n而不是i<=n因為n表示數組長度,而i表示數組索引。 索引從0開始。例如,一個數組保留值1234,因此長度為4,但索引為0、1、2、3。 因此索引總是比數組長度小1。 另外,您還必須將輸入與數組索引一起存儲。

for(int i = 0; i < n; i++)
    {

       numArray[i] = in.nextInt();
    }

然后再打印

for(int i = 0; i < n; i++)
    {

       System.out.println(numArray[i]);
    }

暫無
暫無

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

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