【问题标题】:Making an array object from another Class in Java从 Java 中的另一个类创建数组对象
【发布时间】:2015-11-07 17:24:42
【问题描述】:

首先,让我先说我对 Java 还很陌生,所以如果我搞砸了任何术语或任何东西,我深表歉意。

现在,其次,我的问题。

我在一个类中创建了一个字符串数组('Warranty'):

public class Warranty {

private int monthnum;
private String[] partscovered = new String[5]; {

    partscovered[0]= "Engine";
    partscovered[1]= "Mirrors";
    partscovered[2]= "Electrics";
    partscovered[3]= "Body";
    partscovered[4]= "Wheels";

}


  public Warranty(int monthnum,String[] partscovered) {

    this.monthnum = monthnum;
    this.partscovered= partscovered;

}



public void displaywarranty() {

    System.out.println("*******");
    System.out.println(8);
    System.out.println(partscovered);
    System.out.println("\n");

}

我正在尝试在另一个类中实例化它('VehicleTest'):

public class VehicleTest {

    public static void main(String[] args) {

         ......

        Warranty warranty = new Warranty(0,partscovered); //returns an error: 'partscovered cannot be resolved to a variable'
        warranty.displaywarranty();

          }


}

我想将数组打印到我的 IDE 的控制台,但对于为什么会收到上述错误消息(即partscovered cannot be resolved to a variable)我有点困惑。在我看来,好像我做得对,但显然我没有,所以说实话我有点难过。任何帮助将不胜感激! :)

【问题讨论】:

  • Here partscovered is in Warranty class 你是怎么得到这个的?此外,Warraynty 中的 paratscovered 不是静态变量。
  • 您在main 类中的main 方法中声明的partscovered 在哪里?

标签: java arrays string class constructor


【解决方案1】:

这段代码存在三个问题。

首先,打印数组的方式是

System.out.println(Arrays.toString(partscovered));

其次,您不能将partscovered 传递给Warrenty 构造函数,因为partscoveredWarranty 的一个字段。您将不得不创建一个单独的变量。类似的东西

String[] pc = {"Steering Wheel", "Exhaust Pipe"};
Warranty warranty = new Warranty(0, pc);
warranty.displaywarranty();

或者,您可以完全避免使用变量

Warranty warranty = new Warranty(0, new String[]{"Steering Wheel", "Exhaust Pipe"});

最后,我个人不喜欢您使用实例初始化程序来用"Engine""Mirrors" 等填充数组partscovered。即使您将数组传递给构造函数也会发生这种情况。提供默认数组的另一种方法是编写第二个构造函数:

private String[] partscovered; // This is deliberately not assigned

public Warranty(int monthnum) {
    this.monthnum = monthnum;
    this.partscovered = new String[]{"Engine", "Mirrors", "Electrics", "Body", "Wheels"};
}

public Warranty(int monthnum,String[] partscovered) {
    this.monthnum = monthnum;
    this.partscovered = partscovered;
}

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多