为我的java类做了一个相当大的任务。我编写了整个程序,但是我遇到了最后一个问题,需要检查用户输入到数组中的数据,以确保它是用户输入的整数,而不是垃圾(a, Z,2.0,@%& @#%* @%^等),如果发生错误,它必须循环回来,以错误消息的形式输入,直到符合要求。在数组中进行完整性检查吗?
我听说过使用try/catch来尝试解决方案,我也想过也许是一个while循环,但仍然不确定如何去做。有小费吗?
import java.util.Scanner;
import java.util.Arrays;
public class Assignment6 {
public static int getMaxValue(int[] array) {
int maxValue = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > maxValue) {
maxValue = array[i];
}
}
return maxValue;
}
public static int getMinValue(int[] array) {
int minValue = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] < minValue) {
minValue = array[i];
}
}
return minValue;
}
public static double average(int[] array) {
double sum = 0, average = 0;
for (int i = 0; i < array.length; i++) {
sum = sum + array[i];
average = sum/array.length;
}
return average;
}
public static double Median(int[] array) {
int Median = array.length/2;
if (array.length % 2 == 1) {
return array[Median];
} else {
return (array[Median - 1] + array[Median])/2.0;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter size of array: ");
int[] array = new int[input.nextInt()];
for (int i = 0; i < array.length; i++) {
System.out.print("Enter value #" + (i + 1) + ": ");
array[i] = input.nextInt();
}
System.out.println("\nYour data is:");
for (int i : array)
System.out.print(i + "\n");
System.out.println();
System.out.println("Average is : " + average(array));
System.out.println("Smallest value is: " + getMinValue(array));
System.out.println("Largest value is: " + getMaxValue(array));
System.out.println("\nYour sorted data is: ");
Arrays.sort(array);
for (int i = 0; i < array.length; i++)
System.out.println(array[i]);
double Median = Assignment6.Median(array);
System.out.println("\nThe median is: " + Median);
int Range = Assignment6.getMaxValue(array) - Assignment6.getMinValue(array);
System.out.println("\nThe range is: " + Range);
double midRange = (Assignment6.getMaxValue(array) + Assignment6.getMinValue(array))/2.0;
System.out.println("\nThe Midrange is: " + midRange);
}
}
您已经在使用'nextInt',这不是为您执行检查吗? – 2012-03-29 01:13:57
由于您使用'nextInt()',这意味着任何格式错误的输入都会导致引发异常。你应该只是处理它。 – dlev 2012-03-29 01:18:33