2017-03-25 1 views
2

Diese Verwendung ist der Code, den ich gemacht .... für das Array CodeArray Doppel

public class main 
{ 
    public static int arraySum(int[] arr) 
    { 
    int result = 0; 
    for (int i = 0; i < arr.length; i++) 
    { 
     result += arr[i]; 
    } 
    return result; 
    } 
    public static int arraySumBetter(int [] a) 
    { 
    int result = 0; 
    for (int value : a) 
    { 
     result += value; 
    } 
    return result; 
    } 

    public static void main(String [] args) 
    { 
    double[] a ={0,2,3,1,0.56}; 
    System.out.format("%.1f", (double) arraySumBetter(a)); 
    } 
} 

, wenn ich es laufen druckt er einen Fehler aus:

typed.java:25: error: incompatible types: double[] cannot be converted to int[] System.out.format("%.1f", (double) arraySumBetter(a));

Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output1 error

Ich dachte, dezimal hinzufügen Zahlen mit Double wäre Arbeit, aber es hat nicht funktioniert .. Gibt es eine Möglichkeit, das zu beheben? Ich würde mich über alle Tipps freuen ... danke ...

+0

Mein Englisch ist nicht so gut, wenn Sie also Jungs Details schreiben würde ich geschätzt werden –

+0

Ihre arraySumBetter Methode Parametertyp verändern –

Antwort

1

Sie können nicht von einem Typ zu einem ganz anderen nicht verwandten Typ casten. Mit diesem sagte double != int. Statt hier Gießen

System.out.format("%.1f", (double) arraySumBetter(a)); 
          ^remove 

könnten Sie Ihre Methoden ändern, um eine double[] Array als Parameter wie dieser

public static double arraySumBetter(double[] a) 
    { 
    double result = 0; 
    for (double value : a) 
    { 
     result += value; 
    } 
    return result; 
    } 

Hinweis zu akzeptieren, dass ich Ihre primitive Art von int zu double verändert oder sonst würden Sie das Dezimalsystem verlieren Punkte.

+0

zu verdoppeln Ich weiß nicht warum, aber es funktioniert nicht ....... –

+0

@WJ Was hast du gemacht? –

+0

@ W.J Ich habe den Rückgabetyp von 'arraySumBetter' in' double' geändert. Ich habe vergessen, das hinzuzufügen. –

1

Verwendung doppelt so IN und OUT in Ihrer Funktion .. siehe meine Kommentare

public static int arraySum(int[] arr) 
    { 
    int result = 0; 
    for (int i = 0; i < arr.length; i++) 
    { 
     result += arr[i]; 
    } 
    return result; 
    } 
    public static double arraySumBetter(double [] a) //<<<<<<<<<<<< IN: double, OUT: also double, else the decimals are lost 
    { 
    double result = 0; //<<<<<<<<<< here use double, else you loose decimals 
    for (double value : a) //<<<<<<<<<<<<<<<<<<<<<<<<<< value is double, because a is double[] 
    { 
     result += value; 
    } 
    return result; 
    } 

    public static void main(String [] args) 
    { 
    double[] a ={0,2,3,1,0.56}; 
    System.out.format("%.1f", (double) arraySumBetter(a)); 
    } 
+0

Ich dachte daran, 2 oder 3 Ziffern wie 5.55 auszudrucken, als wie mache ich das? –

+0

"% .2f" statt "% .1f" -> 2 Ziffern –

+0

OH vielen Dank !!!!!!!! –