2016-04-03 6 views
1
import java.util.Scanner; 
public class merge_sort 
{ 
public static void main(String[] args) 
{ 
    Scanner input= new Scanner (System.in); 
    System.out.println("Hello, how many numbers there should be in the array?"); 
    int Size=input.nextInt(); 
    Double A []=new Double [Size] ; 
    System.out.println("Please enter "+ (Size+1)+" real numbers"); 
    for (int z=0;z<Size;z++) 
     A[z]=input.nextDouble(); 
    int p=0,q=(Size/2+1),r=(Size-1);//assuming that the array with even length. 
    int L []=new int [4] ;//the left side, sorted array 
    int R []=new int [4] ;//the right side, sorted array 
    L[0]=7;L[1]=6;L[2]=2;L[3]=1; 
    R[0]=5;R[1]=4;R[2]=3;R[3]=8; 
    for(int i=0;i<4;i++) 
     System.out.print(L[i]); 
    System.out.println(""); 
    for(int j=0;j<4;j++) 
     System.out.print(R[j]); 

merge(L,R);   
} 

Double Ich habe einen Fehler in dieser Zeile des Codes:Typenkonflikt: kann nicht von Doppel konvertiert

A[z]=input.nextDouble(); 

Der Fehler ist: Typenkonflikt: kann nicht von Doppel zu Double konvertieren

Ich bin stecken paar Stunden, kann mir jemand dabei helfen?

+0

überprüfen Sie bitte, welche Version von Java Sie verwenden .. Bitte fügen Sie Fehler 'Stack-Trace' hinzu, um das Problem zu identifizieren, da Autoboxing automatisch nach Java V1.5 erfolgt. @Nahorai –

+0

Es funktioniert gut für mich (Java v_1.7) wegen Autoboxing-Funktion. –

+0

Der Compilerfehler ist ziemlich klar. Fall ist wichtig, "Double" ist eine Wrapper-Klasse für den primitiven Typ "double", sie sind nicht identisch. Ändern Sie entweder Ihr Array: 'double A [] = new double [Size]' oder ändern Sie die Zuweisung: 'A [z] = new Double (input.nextDouble());' –

Antwort

2

Double ist ein class Typ. nextDouble gibt den primitiven Typ double zurück. Ändern A-double Array

double[] A = new double[Size]; 
+0

@Guy was ist mit der Autoboxing-Funktion in 'Java'. Warum wird 'nextDouble()' zurückgegebener Wert nicht automatisch in ein 'Double' ?? Bitte erläutern Sie dies –

0

Wie Guy Antwort, oder Sie können Zeile:

A[z]=input.nextDouble(); 

zu:

A[z]=new Double(input.nextDouble()); 
0

Es gibt zwei Wege, dies zu tun.

  1. von constructor von Double Klasse aufrufen new Operator und die input.nextDouble() vorbei.

    A[z] = new Double(input.nextDouble()); 
    

2. ein cooles Feature eingeführt und nach Java 1.5 genannt autoboxing So können Sie versuchen, dies auch.

A[z] = (Double)input.nextDouble();