2017-05-15 19 views
-1

線程「主」的java我有什麼事情的一個問題,每當我嘗試編譯它,它不斷給我的錯誤是這樣的:在線程「主要」的java異常在歸併

例外。 util.InputMismatchException在 java.util.Scanner.throwFor(Scanner.java:864)

java.util.Scanner.next(Scanner.java:1485)

java.util.Scanner.nextInt(掃描儀.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]; 
} 
} 
+0

'掃描儀輸入=新掃描儀(「system.in」);'沒有做你認爲它正在做的事情,這就是爲什麼你會得到例外 – MadProgrammer

+0

從哪裏得到的想法做'新的掃描儀(「system.in」)'? –

回答

2

您使用了錯誤的構造函數初始化中的Scanner對象你的代碼。

引文結束在您的偵測對象的構造函數的字符串:

它應該是這樣的:

Scanner input = new Scanner(System.in); 

我能在這之後運行程序。


PS:您看到的錯誤不是編譯時錯誤。您可能在運行時獲得它。


希望這有助於!

+1

爲了讓你明白不同:'Scanner'也可以用'String'參數構造。結果'Scanner'對象然後處理該字符串的字符。例如,如果您編寫了'Scanner input = new Scanner(「10」);',您對'input.nextInt()'的調用將完整地返回整數值10。 –

0

掃描儀類的語法錯誤。

這樣使用它:

Scanner input = new Scanner(System.in); 

對於採取從控制檯輸入。