-2

int[] 配列のその時点で追加する値を入力するたびに null ポインター例外が発生し、ここからどこに行くべきか、または別の配列が必要かどうかがわかりません。どんな助けでも大歓迎です。

import java.util.Scanner;

public class Range
{
private int[] range;
private int begin,end,falseLoop,numInts,count;
Scanner scan = new Scanner(System.in);

public static void main(String[] args)
{
    Range r = new Range();
    r.getRange();
    r.getAmount();
    r.getInts();
    //r.printAll();
}

private void getRange()
{
    System.out.println("Please enter the first number in the range you would like to use: ");
    begin = scan.nextInt();
    System.out.println("Please enter the second number in the range you would like to use: ");
    end = scan.nextInt();
    falseLoop = end;
    int[] range = new int[(Math.abs(begin) + Math.abs(end))];  
    for(int x = 0; x < range.length; x++)
    {
        range[x] = 0;
    }
}

private void getAmount()
{
    System.out.println("Please enter the amount of integers you would like to enter " 
        + "in the range of " + begin + " to " + end);
    numInts = scan.nextInt();
}

private void getInts()
{
    for(int y = 0; y < numInts; y++)
    {
        System.out.println("Please enter an integer: ");
        range[scan.nextInt()]++;
    }
}
private void printAll()
{
    for(int i = 0; i < range.length; i++)
    {
        System.out.println("Value: " + falseLoop + "equals: " + range[i]);
        falseLoop++;
    }
}
}
4

2 に答える 2

4

内でクラス変数をシャドーイングしていますgetRange

int[] range = new int[(Math.abs(begin) + Math.abs(end))];

実際には次のようになります。

range = new int[(Math.abs(begin) + Math.abs(end))];

配列を宣言したため、null ポインターを取得しますが、配列には何も割り当てられていません。

于 2013-02-06T04:38:47.223 に答える
0

あなたのコードからのステートメントを理解していません

ragne[x] = new int[0];

ここで、整数の配列を整数変数に代入しようとしています。お気に入り

integer = integerArray;
于 2013-02-06T04:45:50.983 に答える