我是以下Java程序。
package Arrays;
import java.util.Scanner;
public class Arrays {
public static void main(String[] args) {
final int size = 5; // Size of the input Array
Scanner input = new Scanner(System.in);
while (!input.equals("q")) {
System.out.println("Enter the 5 number you want to be stored in an array");
// get the input of array from the user
int a[] = new int[size];
for (int i = 0; i < a.length; i++) {
a[i] = input.nextInt();
}
/* Methods */
System.out.println("\n");
displayArray(a); // to display the numbers entered in Array
System.out.println("\n");
sumOfArray(a);// To print the sum of Array
System.out.println("\n");
productOfArray(a);// to print the product of Array
System.out.println("\n");
smallAndLargeOfArray(a);// to print the Max and Min number in Array
System.out.println("\n");
averageOfArray(a);// to print the average of Array
System.out.println("\n");
}
input.close();
}
private static void displayArray(int arr[]) {
System.out.print("The numbers you have inserted are ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
if (i < arr.length - 1) {
System.out.print(", ");
}
}
}
private static void sumOfArray(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.print("Sum of array is " + sum);
}
private static void productOfArray(int[] arr) {
int prod = 1;
for (int i = 0; i < arr.length; i++) {
prod *= arr[i];
}
System.out.print("Product of array is " + prod);
}
private static void smallAndLargeOfArray(int arr[]) {
int minimim = Integer.MAX_VALUE;
int maximum = Integer.MIN_VALUE;
for (int i = 0; i < arr.length; i++) {
if (minimim > arr[i]) {
minimim = arr[i];
}
if (maximum < arr[i]) {
maximum = arr[i];
}
}
System.out.print("Minimum and Maximum numbers in array are " + minimim
+ " and " + maximum);
}
private static void averageOfArray(int arr[]) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
double avg = sum / 5;
System.out.print("Average of array is " + avg);
}
}
这里我试图继续该程序,直到用户输入q
,但是当我输入q
时,它会抛出以下错误。
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Arrays.Arrays.main(Arrays.java:16)
请让我知道我哪里出错了,我该如何解决这个问题。
由于
答案 0 :(得分:2)
你应该这样做,因为你正在比较你的Scanner
对象
String inputName=""
Scanner input = new Scanner(System.in);
inputName= in.nextLine();
while (!inputName.equals("q")) {..}
由于扫描仪对象不等于“q”(这是一个字符串),while循环连续运行。 然后扫描仪等待一个整数,但它需要一个字符。因此扫描程序抛出异常(表示输入无法转换为整数值)
<强>读:强>
答案 1 :(得分:1)
该行抛出异常:
a[i] = input.nextInt();
当您输入'q'时,下一个标记无法转换为int,因此请获取InputMismatchException
。您应该使用hasNextInt()
方法检查下一个标记是否为int。
此外,您的条件!input.equals("q")
没有意义。在这里,检查Scanner对象是否等于字符串“q”。您要做的是检查Scanner对象的下一个标记是否等于字符串“q”:
boolean cont = true;
while (cont) {
System.out.println("Enter the 5 numbers you want to be stored in an array");
// get the input of array from the user
int a[] = new int[size];
for (int i = 0; i < a.length; i++) {
if (input.hasNextInt()) {
a[i] = input.nextInt();
}
else {
String token = input.next();
if ("q".equals(token)) {
cont = false;
break;
}
i--; // move back to the last position
}
}
...
}
答案 2 :(得分:1)
目前,您正在尝试将String类型的对象与Scanner类型的对象进行比较。结果始终为false,您输入while循环并请求nextInt()
导致类型不匹配,因为下一个标记为“q”。
你应该使用带有正则表达式的input.findInLine()来查看下一个令牌而不使用它并检查它是否满足你的突破条件。
while(input.hasNextLine() && !input.findInLine("^q$")){
//...
}
<强>读:强>
编辑:
编辑使用不使用令牌的findInLine
。
答案 3 :(得分:1)
在while循环外使用Sysout并在while循环中更改条件。
System.out.println("Enter the 5 number you want to be stored in an array");
Scanner input = new Scanner(System.in);
while (!input.next().equals("q")) {
System.out.println("Enter the 5 number you want to be stored in an array");
答案 4 :(得分:0)
使用nextInt()
只预期int值。如果它不是q