我是初学者,想知道如何使用循环来更新对象的ArrayList中的属性。所以这里我有一个智能手机的arraylist,每个都有serialNo和品牌作为属性,但价格尚未更新。
public class Smartphone{
public String serialNo;
public String brand;
public Double price;
public Smartphone(String serialNo, String brand){
this.serialNo = serialNo;
this.brand = brand;
}
public void setPrice(double price){
this.price = price;
}
}
public class Test{
public static void main(String[] args) throws Exception{
ArrayList<Smartphone> smartphones = new ArrayList<Smartphone>();
for (int i = 0; i < 5; i++){
Smartphone s = new Smartphone("12345678" ,"Samsung");
smartphones.add(s);
}
//later I realize I want to add the price,
//but it seems the loop I'm using is not working
for (int i = 0; i < 5; i++){
smartphones.get(i).setPrice(398);
}
}
}
我想知道为什么我使用的循环不起作用,有没有其他方法可以为每个智能手机增加价格?
答案 0 :(得分:1)
在AIDE上使用以下代码进行测试。你的代码运行正常。
请注意我使用增强的for循环来显示价格。如果你在循环中没有明确需要索引,那么增强的for循环是一种迭代遍历列表的简洁方法。
import java.util.ArrayList;
class Smartphone{
public String serialNo;
public String brand;
public Double price;
public Smartphone(String serialNo, String brand){
this.serialNo = serialNo;
this.brand = brand;
}
public void setPrice(double price){
this.price = price;
}
}
public class Test{
public static void main(String[] args) throws Exception{
ArrayList<Smartphone> smartphones = new ArrayList<Smartphone>();
for (int i = 0; i < 5; i++){
Smartphone s = new Smartphone("12345678" ,"Samsung");
smartphones.add(s);
}
//later I realize I want to add the price,
//but it seems the loop I'm using is not working
for (int i = 0; i < 5; i++){
smartphones.get(i).setPrice(398);
}
// Display prices to ensure they were set
for (Smartphone phone : smartphones) {
System.out.println(phone.price);
}
}
}
原谅奇怪的缩进。 AIDE喜欢用缩进字符快速和松散地玩。
答案 1 :(得分:-1)
您已为Student创建构造函数,并且您正在循环更新SmartPhone。添加SmartPhone的构造函数如下:
public Smartphone(String serialNo, String brand) {
this.serialNo = serialNo;
this.brand = brand;
}
编辑后续评论: 我刚刚编辑了拼写错误,添加了一个toString()方法来打印outout。 @AxelH,所以根据你的说法,额外的印刷声明解决了这个问题?
import java.util.ArrayList;
class Smartphone{
public String serialNo;
public String brand;
public Double price;
public Smartphone(String serialNo, String brand){
this.serialNo = serialNo;
this.brand = brand;
}
public void setPrice(double price){
this.price = price;
}
public String toString(){
return this.serialNo+" "+this.brand+" "+this.price;
}
}
public class Test1{
public static void main(String[] args) throws Exception{
ArrayList<Smartphone> smartphones = new ArrayList<Smartphone>();
for (int i = 0; i < 5; i++){
Smartphone s = new Smartphone("12345678" ,"Samsung");
smartphones.add(s);
}
//later I realize I want to add the price,
//but it seems the loop I'm using is not working
for (int i = 0; i < 5; i++){
smartphones.get(i).setPrice(398);
}
for (int i = 0; i < 5; i++){
System.out.println(smartphones.get(i).toString());
}
}
}
答案 2 :(得分:-1)
您的代码似乎对我有用,但是如果您的意思是它无法正常工作,因为您无法看到价格,那么您需要做的就是在智能手机类中创建一个函数,返回{{1使用this.price
后调用它。