合并排序中线程 "main" java 中的异常
Exception in thread "main" java in mergesort
我对发生了什么有疑问,每当我尝试编译它时,它总是给我这样的错误:
Exception in thread "main" java.util.InputMismatchException at
java.util.Scanner.throwFor(Scanner.java:864)
java.util.Scanner.next(Scanner.java:1485)
java.util.Scanner.nextInt(Scanner.java:2117)
java.util.Scanner.nextInt(Scanner.java:2076)
MergeSort.main(MergeSort.java:11)
import java.util.Random;
import java.util.*;
public class MergeSort
{
static final int MAX=10005;
static int[] a=new int[MAX];
public static void main(String[] args)
{
Scanner input = new Scanner("system.in");
System.out.println("Enter MAx array size");
int n = input.nextInt();
Random random =new Random();
System.out.println("Enter Array Elements");
for(int i=0;i<n;i++)
a[i]= random.nextInt(1000);
long startTime =System.nanoTime();
MergeSortAlgorithm(0,n-1);
long stopTime =System.nanoTime();
long elapsedTime =stopTime-startTime;
System.out.println("Time Complexity in ms for n ="+n+(double)elapsedTime/1000000);
System.out.println("Sorted Array(MergeSort):");
for(int i=0;i<n;i++)
System.out.println(a[i]+"");
input.close();
}
public static void MergeSortAlgorithm(int low,int high)
{
int mid ;
if(low<high)
{
mid=(low+high)/2;
MergeSortAlgorithm(low,mid);
MergeSortAlgorithm(mid+1,high);
Merge(low,mid,high);
}
}
public static void Merge(int low,int mid,int high)
{
int[]b=new int[MAX];
int i,h,j,k;
h=i=low;
j=mid+1;
while((h<=mid)&&(j<=high))
if(a[h]<a[j])
b[i++]=a[h++];
else
b[i++]=a[j++];
if(h>mid)
for(k=j;k<=mid;k++)
b[i++]=a[k];
}
}
您在代码中使用了错误的构造函数来初始化 Scanner
对象。
取消引用 Scanner 对象的构造函数中的字符串:
应该是这样的:
Scanner input = new Scanner(System.in);
之后我能够运行你的程序。
PS:您看到的错误不是编译时错误。您可能会在 运行 时间得到它。
希望对您有所帮助!
扫描仪语法错误 class。
像这样使用:
Scanner input = new Scanner(System.in);
用于从控制台获取输入。
我对发生了什么有疑问,每当我尝试编译它时,它总是给我这样的错误:
Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864)
java.util.Scanner.next(Scanner.java:1485)
java.util.Scanner.nextInt(Scanner.java:2117)
java.util.Scanner.nextInt(Scanner.java:2076)
MergeSort.main(MergeSort.java:11)
import java.util.Random;
import java.util.*;
public class MergeSort
{
static final int MAX=10005;
static int[] a=new int[MAX];
public static void main(String[] args)
{
Scanner input = new Scanner("system.in");
System.out.println("Enter MAx array size");
int n = input.nextInt();
Random random =new Random();
System.out.println("Enter Array Elements");
for(int i=0;i<n;i++)
a[i]= random.nextInt(1000);
long startTime =System.nanoTime();
MergeSortAlgorithm(0,n-1);
long stopTime =System.nanoTime();
long elapsedTime =stopTime-startTime;
System.out.println("Time Complexity in ms for n ="+n+(double)elapsedTime/1000000);
System.out.println("Sorted Array(MergeSort):");
for(int i=0;i<n;i++)
System.out.println(a[i]+"");
input.close();
}
public static void MergeSortAlgorithm(int low,int high)
{
int mid ;
if(low<high)
{
mid=(low+high)/2;
MergeSortAlgorithm(low,mid);
MergeSortAlgorithm(mid+1,high);
Merge(low,mid,high);
}
}
public static void Merge(int low,int mid,int high)
{
int[]b=new int[MAX];
int i,h,j,k;
h=i=low;
j=mid+1;
while((h<=mid)&&(j<=high))
if(a[h]<a[j])
b[i++]=a[h++];
else
b[i++]=a[j++];
if(h>mid)
for(k=j;k<=mid;k++)
b[i++]=a[k];
}
}
您在代码中使用了错误的构造函数来初始化 Scanner
对象。
取消引用 Scanner 对象的构造函数中的字符串:
应该是这样的:
Scanner input = new Scanner(System.in);
之后我能够运行你的程序。
PS:您看到的错误不是编译时错误。您可能会在 运行 时间得到它。
希望对您有所帮助!
扫描仪语法错误 class。
像这样使用:
Scanner input = new Scanner(System.in);
用于从控制台获取输入。