I get an java.lang.ArrayIndexOutOfBoundsException when a user inputs a negative
ID: 3624293 • Letter: I
Question
I get an java.lang.ArrayIndexOutOfBoundsException when a user inputs a negative number. How do I count and sort a negative number? I know it's not possible to pass a negative array. Right?
Here is the code.
public class NumberSorter
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("How many? ");
int size = input.nextInt();
int[] numbers = new int[size];
System.out.println("Enter " + numbers.length + " numbers.");
for(int i = 0; i < size; i++)
{
int number = input.nextInt();
numbers[i] = number;
}
Arrays.sort(numbers);
int largestNum = numbers[numbers.length-1];
int[] count = new int[largestNum+1];
for (int currentNumber : numbers)
{
count[currentNumber]++;
}
System.out.println("Number " + " " + "Count");
for(int i = 0, length = count.length; i < length; i++)
{
if(count[i] != 0)
{
System.out.println(i + " " + count[i]);
}
}
}
}
Thanks in advance for the help! It's much appreciated!
Explanation / Answer
please rate - thanks
import java.util.*;
public class NumberSorter
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int size;
do
{
System.out.println("How many? ");
size = input.nextInt();
if(size<=0)
System.out.println("must be positive!");
}while (size<=0);
int[] numbers = new int[size];
System.out.println("Enter " + numbers.length + " numbers.");
for(int i = 0; i < size; i++)
{
int number = input.nextInt();
numbers[i] = number;
}
Arrays.sort(numbers);
int largestNum = numbers[numbers.length-1];
int smallestNum=numbers[0];
int items;
if(smallestNum<0)
items=Math.abs(smallestNum);
else
items=0;
int[] count = new int[largestNum+1+ items];
for (int currentNumber : numbers)
{ int num;
num=currentNumber+items;
count[num]++;
}
System.out.println("Number " + " " + "Count");
for(int i = 0, length = count.length; i < length; i++)
{
if(count[i] != 0)
{
System.out.println(i-items + " " + count[i]);
}
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.