【问题标题】:Copying a Boolean array on Java在 Java 上复制布尔数组
【发布时间】:2013-02-04 03:38:52
【问题描述】:

我正在尝试将一个布尔数组复制到另一个布尔数组中。这是我正在尝试的:

public class Nucleo {
private boolean[] nivel;

public Nucleo(boolean[] carga, double x, int i){ //Copy the array
    for(int j=0; j<carga.length; j++){ 
        nivel[j]=carga[j];
    }

    x=potencia;
    i=porcentaje;

}

我从main 发送数组boolean[] carga。像这样:

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean[] niveles = new boolean[8];
    rellniveles(niveles);
    Nucleo nivel1= new Nucleo(niveles, 5, 4);
    nivel1.getPotencia();
}

public static void rellniveles(boolean[] niv){ //Fill the array
    niv[0]=true;
    niv[1]=true;
    niv[2]=true;
    niv[3]=true;
    niv[4]=true;
    niv[5]=true;
    niv[6]=false;
    niv[7]=false;

}

如果我尝试使用"System.arraycopy( carga, 0, nivel, 0, carga.length );" 进行复制

我收到错误:"Source not found".

我正在使用 Eclipse。我收到 System.arraycopy() i.imgur.com/pbGrKz6.png 的这个错误

【问题讨论】:

  • 请显示给出错误的代码,而不是应该有效的代码。
  • 还有,你在哪里给boolean[] nivel分配内存?
  • 好的,很抱歉。 João Fernandes 怎么说,我没有为数组保留内存。我不敢相信。谢谢大家。

标签: java arrays copy boolean


【解决方案1】:

Arrays.copyOf(boolean[] original, int newLength) 应该可以帮到你。

例如:

public Nucleo(boolean[] carga, double x, int i) {
    this.nivel = (carga == null) ? null : Arrays.copyOf(carga, carga.length);
    ...
}

【讨论】:

    【解决方案2】:

    当您尝试访问您无权访问的方法的源代码时,Eclipse 会抛出该消息。这并不意味着您的代码中有任何错误。

    您正在寻找的方法 System.arrayCopy() 是 Java 核心库的一部分,因此可以在 JDK 中应包含的 src.zip 中找到。

    以下链接说明了如何将其链接到您的 Eclipse 环境 - http://veerasundar.com/blog/2011/08/attaching-java-source-with-eclipse-ide/

    然而,在这种情况下,System.arrayCopy() 不是在 Java 中实现的,而是在本地实现的,因此您将无法查看源代码,至少无法查看 Java 源代码。

    如果您在复制数组时遇到实际问题(从您的问题中不清楚) - 那么按照上面 timonik 的示例可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2017-03-21
      • 2020-06-07
      • 2015-01-07
      相关资源
      最近更新 更多