簡體   English   中英

為什么會出現語法錯誤

[英]Why do I get a syntax error

為什么在.ToArray出現錯誤。 (語法)似乎是即時通訊輸入了正確的參數值。

感謝您的答復。

import java.util.LinkedList;

public class Vector {


private double doubleComposantes[];
private int intNombreDeComposante = 0;


public Vector(String strComposantes) {

    strComposantes = strComposantes.trim();
    intNombreDeComposante = getNumberOfComposantes(strComposantes);
}

private int getNumberOfComposantes(final String strComposantes) {

    return strComposantes.split(",").length;
}


private double[] getAllComposantes(final String strComposantes) {

    final String[] strComposantesSplitted = strComposantes.split(",");
    LinkedList<Double> doubleComposantesConvertis = new LinkedList<Double>();

    for (String strComposante : strComposantesSplitted) {

        doubleComposantesConvertis.add(Double.valueOf(strComposante));

    }

    int intLongueur = doubleComposantesConvertis.size();
    return doubleComposantesConvertis.toArray(new double[intLongueur]); // error at toArray()
}

}

LinkedList中的toArray簽名為

public <T> T[] toArray(T[] a)

並且由於T將在運行時被擦除為Object ,因此您只能在此處使用Object類型,而不能使用基本類型。 嘗試使用Double而不是double

return doubleComposantesConvertis.toArray(new Double[intLongueur]); 

注意,您還必須將方法的返回類型更改為Double[]


更新:

如果要返回double[]並可以使用外部庫,則可以從guava使用Doubles.toArray

return Doubles.toArray(doubleComposantesConvertis);//will return double[]

使用此代替:

doubleComposantesConvertis.toArray(new Double[intLongueur]);

請注意, Double是大寫的。 那是因為它是一個對象而不是原始對象。

toArray()接收一個對象數組,您要傳遞一個double數組,它是原始對象而不是對象。 自動裝箱不適用於數組。

double[]不是Double[] 您可以將返回值更改為Double[]或手動構建double[]

我建議您避免在代碼中使用數組,而應使用List 這樣,您就不會有這個問題。 僅在嚴格必要時使用數組。

private List<Double> getAllComposantes(final String strComposantes) {
    final String[] strComposantesSplitted = strComposantes.split(",");
    final List<Double> doubleComposantesConvertis = new LinkedList<Double>();
    for (String strComposante : strComposantesSplitted) {
        doubleComposantesConvertis.add(Double.valueOf(strComposante));
    }
    return doubleComposantesConvertis;
}

另外,請確保出於某種原因需要LinkedList而不是ArrayList在大多數情況下,效果更好 )。

提到的更改將解決您的問題,但實際上,最好使用0參數的toArray方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM