我有一个ArrayList,其中包含Boat类的n个实例。 Boat类具有许多更改该Boat的实例变量的方法。
例如:
public void Command(String command)
{
int inefficientwayofdoingthis=0;
if(command.equals("power on"))
{
inefficientwayofdoingthis++;
int x=1;
setpower(x);
System.out.println(name+" is on and is travelling in the direction of "+angle+" deg. with speed: "+ speed+"mph");
}
//...
我遇到的问题是此Command方法应将[instancename].power
的值设置为1。
实例包含在ArrayList中,数据:
我正在使用以下代码来更改arraylist中的实例:
int numberinArray = whatever;
String theorder = "power on";
data.get(numberinArray).Command(theorder);
但是,每次执行此命令时,该命令都会起作用并产生输出,但是随后的命令似乎无法识别data.get(numberinArray).power
应该等于1。我认为我遇到了一个问题,因为这是一个类的每个实例的深层副本,而不是浅层副本。有人会对如何缓解此问题有任何建议吗?
答案 0 :(得分:0)
如果您希望电源保持“附着”在船实例上,则应为实例变量。这可能是这样的:
private static int vector[];
public static int getMax(int [] nums){
return Arrays.stream(nums).max().getAsInt();
}
public static int getMin(int [] nums){
return Arrays.stream(nums).min().getAsInt();
}
public static String createVect(){
Scanner input = new Scanner(System.in);
System.out.print("Number of elements: ");
int n = input.nextInt();
vector = new int[n];
for (int i = 0; i < n; i++) {
System.out.print("Valor " + (i+1) + ": ");
vector[i] = input.nextInt();
}
return Arrays.toString(vector);
}
public static void main(String[] args) {
System.out.println(createVect());
System.out.println("The min value: " + getMin(vector));
System.out.println("The max value: " + getMax(vector));
}
然后您可以在示例中添加其他方法,例如package com;
public class Boat {
private int power;
private String color;
Boat() {
// may want to initialize some values
this.setPower(0);
this.setColor("red");
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}