如何更改类中数组的值

时间:2017-02-18 13:12:30

标签: java

我对我的代码有疑问。

class Zillion
{
    private int[] d;
    public Zillion(int size)
    {
        d = new int[size];
    }
    public void timesTen()
    {
       for(int i = 0; i<d.length;i++)
       {
           d[i] = d[i + 1];
       }
       d[d.length]=0;
    }

    public String toString()
    {
        String num;
        num= "";
        for(int i = 0; i<d.length; i++)
        {
            num = num + d[i];
        }
        return num;
    }
}

在我的类Zillion中,我试图将数组表示的数字乘以10.所以我所做的是将每个索引处的元素移动到左边,并将最后一个索引处的值更改为0例如,

0 1 4 8将来1 4 8 0。

我不确定我的逻辑是否有效但这是我的第一次开始。 首先,我尝试使用指定的大小更改数组的每个索引处的值,这是我的驱动程序文件。

class Driver
{
    public static void main(String[] args)
    {
        Zillion z = new Zillion(5);
        System.out.println(z);  //  00000  


       for (int j = 0; j <= 5; j += 1)
        {
          z[j]=j;
        }
        System.out.println(z);  

    }
}

然而,Java给我一个错误,并说:“错误:(32,14)java:数组需要,但Zillion发现”。 我使用C ++,我相信我可以改变像z [j] = j这样的数组值,但我想它在Java中是不同的。 有没有办法可以改变我想要的特定索引的值?我使用for循环的原因是因为我无法想到任何可用于在我想要的每个索引处分配值的方法。有可能在Driver文件中我创建了一个数组,比如说,0148并调用我的“timesTen”方法来给我我想要的东西吗? 谢谢!

5 个答案:

答案 0 :(得分:0)

您不能索引类,只能索引数组。

在Zillion中定义方法

class Zillion {

    public void set(int index, int value) {
        // TODO implement
    } 
 } 

在循环中,请致电z.set(j, j)

注意:j <= 5将导致超出范围的异常

答案 1 :(得分:0)

  

我相信我可以改变像z [j] = j

这样的数组值

你可以 - 如果z是一个阵列!但是,正如错误消息所述,它是Zillion

类型的对象
Zillion z = new Zillion(5);

答案 2 :(得分:0)

您正在使用Zillion类的实例z,使用数组而不是它。

//Create getter method in Zillion Class
public int[] getD() {
        return d;
    }

//And access that array in Driver Class
int[] array = z.getD();
        for (int j = 0; j < 5; j += 1) {
            array[j] = j;
        }

答案 3 :(得分:0)

此外,你将面临一个

  

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:5

因为你的timesTen()实现中的语句d[d.length] = 0;。你必须用以下代码替换该行:

d[d.length-1] = 0;

这不是你问题的答案,因为你已经收到了有价值的答案,但我希望它可以帮助你。

答案 4 :(得分:0)

您需要使用gettor方法公开zillion类的数组d。

public getArray(){return d;}

而不是z [j] = j;你需要使用z.getArray()[j] = j

此外,您的timesTen方法将导致该行中的arrayindex超出范围异常    d [d.length] = 0;

Java数组不会动态增长,因此,Index应小于数组大小。