【发布时间】:2014-12-10 02:34:03
【问题描述】:
如果用户输入字符串而不是整数,我会尝试对我的代码进行异常处理。我的代码会将最大索引的位置交换为最小索引。你能试着和我一起纠正这个问题吗?
import java.util.Scanner;
import java.util.InputMismatchException;
public class ArraySwap
{
static int h;
static Scanner data = new Scanner(System.in);
static int[] list = new int[10];
public static void main(String[] args)throws InputMismatchException
{
System.out.println("Please enter 10 numbers: ");
for(h = 0; h < list.length; h++)
{
try
{
list[h] = data.nextInt();
}
catch(InputMismatchException h)
{
System.out.println("Please re-enter 10 numbers as an exception "
+ h.toString());
continue;
}
}
swap();
}
public static void printArray(int[] list)
{
int counter;
for(counter = 0; counter < list.length; counter++)
System.out.print(list[counter] + " ");
}
public static int smallestIndex(int[] list)
{
int length1 = list.length;
int counter;
int minIndex = 0;
for (counter = 1; counter < length1; counter++)
if (list[minIndex] > list[counter])
minIndex = counter;
return minIndex;
}
public static int largestIndex(int[] list)
{
int length2 = list.length;
int counter;
int maxIndex = 0;
for (counter = 1; counter < length2; counter++)
if (list[maxIndex] < list[counter])
maxIndex = counter;
return maxIndex;
}
public static void swap()
{
System.out.print("List of elements: ");
printArray(list);
System.out.println();
int min_index = smallestIndex(list);
int max_index = largestIndex(list);
int min_num = list[min_index];
System.out.println("Largest element in list is: "
+ list[max_index]);
System.out.println("Smallest element in list is: "
+ list[min_index]);
min_num = list[min_index];
list[min_index] = list[max_index];
list[max_index] = min_num;
System.out.print("Revised list of elements: ");
printArray(list);
System.out.println();
}
}
【问题讨论】:
-
很不清楚你在问什么。你能说得更具体一点吗?
-
嗨,Kick,我要求在我的主程序中创建一个豁免,然后它将在显示 InputMismatchException 后继续。
-
之后会发生什么?
-
你的代码现在有什么问题?
-
好的。我的程序从键盘读取 10 个整数,并将它们存储在一个数组中。它找到数组中最大值和最小值的位置(或索引),并将它们交换(将最大的元素移动到最小的位置,并将最小的元素移动到最大的位置)。我现在想弄清楚的是,如果我输入了一个字符串,如何创建一个 InputMismatchException。
标签: java arrays exception for-loop inputmismatchexception