我有一个特殊的问题,当在数组中分配循环中的元素时,事情发生得很好。
当我移出循环并进行检查时,所有索引的相同数组值将设置为最后一个索引的数组值。下面是代码
JSONObject js = new JSONObject(json_string);
JSONArray jsonArray=js.getJSONArray("customer");
DataModelCollection[] dataModelCollection = new DataModelCollection[7];
for (int i=0;i<jsonArray.length();i++) {
JSONObject json = jsonArray.getJSONObject(i);
amont = json.getLong("BalanceAmount");
custName = json.getString("CustName");
partitionKey = json.getInt("PartitionKey");
String date1 = json.getString("date");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = df.parse(date1);
dataModelCollection[i] = new DataModelCollection();
dataModelCollection[i].setName(custName);
dataModelCollection[i].setAccountNo(partitionKey);
dataModelCollection[i].setAmount(amont);
dataModelCollection[i].setCollectedDate(date);
Log.i("inside_loop", ""+dataModelCollection[i].getName());
}
Log.i("outside_loop", ""+dataModelCollection[0].getName());
Log.i("outside_loop", ""+dataModelCollection[1].getName());
Log.i("outside_loop", ""+dataModelCollection[2].getName());
Log.i("outside_loop", ""+dataModelCollection[3].getName());
Log.i("outside_loop", ""+dataModelCollection[4].getName());
Log.i("outside_loop", ""+dataModelCollection[5].getName());
Log.i("outside_loop", ""+dataModelCollection[6].getName());
当我打印的inside_loop
这基本上是在循环值显示正确.的时刻执行出来并检查"outside_loop"的值成为dataModelCollection[6]. getName()-这是最后一个索引的值.相同是金额
、日期
、分区键
的情况。
不知道我哪里错了。
无论它的价值在这里是DataModelCollection
模态类:
public class DataModelCollection {
public static long accountNo;
public static String name;
public static double amount;
public static Date collectedDate;
public DataModelCollection(long accountNo, String name, double amount, Date collectedDate) {
this.accountNo = accountNo;
this.name = name;
this.amount = amount;
this.collectedDate = collectedDate;
}
public DataModelCollection() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public Date getCollectedDate() {
return collectedDate;
}
public void setCollectedDate(Date collectedDate) {
this.collectedDate = collectedDate;
}
public long getAccountNo() {
return accountNo;
}
public void setAccountNo(long accountNo) {
this.accountNo = accountNo;
}
我真的不知道是什么导致了这种情况。请帮忙。
你的DataModelCollection
类的属性是静态的!这意味着它们对类的所有实例都是通用的。因此,您的循环每次只需更改这些静态变量的值,因为它们对所有实例都是通用的。
您必须从每个列表中删除关键字static
。也可以将其从public
更改为private
,因为您正在使用setter和getter来更改这些值。
public static long accountNo;
public static String name;
public static double amount;
public static Date collectedDate;
到
private long accountNo;
private String name;
private double amount;
private Date collectedDate;
它们都成为最后一个设置值的原因是static
意味着变量属于类
,而不是实例“object”。因此,即使您正在使用dataModelCollection[i]=newdatamodelcollection()创建新对象
,当您更改静态变量时,它们将影响所有DataModelCollection
对象。这里有更多关于静态/实例的信息。
public static long accountNo;
public static String name;
public static double amount;
public static Date collectedDate;
这些变量必须是实例变量,而不是静态变量。
删除static
关键字,它的行为应该符合您的要求。
用外行人的话说,“静态”在Java中是什么意思?
我一直得到一个错误,但我不明白为什么。这个错误是关于不能从double转换成int,但是我把所有东西都声明成double,所以我不明白为什么会出现这个错误。
while循环开始之前的语句没有打印,并且从1开始没有打印循环中的值。相反,它从一个随机的大int开始打印。
我已经创建了一个字符串数组,其中包含单词“磅”、“美元”和“欧元”,我想把这些标签放在旗帜的左边(为了用户应用程序的清晰性,因为不是每个用户都知道哪个货币属于哪个国家)。 我创建了一个循环,将创建一个标签,并将其分配到旗帜的左侧,它应该使一个"英镑"标签,然后一个"美元",然后一个"欧元"每次穿越Y轴南部,使他们与旗帜对齐然后,它将重置数组计数以返回到正确的字符串,沿着x轴移动并再次重复。然而,它
所以我想看看有没有办法循环这些数组,看看哪一个与main函数中提供的{6,1,1,6,3,1,4,7,7,1}的数组匹配。
问题内容: 我的Java应用程序在编译代码时遇到问题,它说它找不到符号 roomLength 。应用程序应该执行的操作是提示用户输入房间名称,然后如果该房间名称为“退出”,则必须关闭该程序。否则会提示输入房间的长度,宽度和高度。如果这些尺寸中的任何一个等于或小于零,它将再次提示输入尺寸。 这是我的主要方法。 提前致谢!;) 还有一个几乎与此问题类似的问题,只是它应该循环回到第一个提示,允许用户输入
我是java的新手,我正在编写这个简短的程序,您可以在其中猜测1到10之间的数字。正确的数字存储为整数。如果您猜测较低的数字,它应该说“正确的数字较高”,如果您猜测较高,它应该说“正确的数字较低”。这是我所拥有的: 所以很明显这是行不通的,因为如果你输入一个更小的数字,它会跳到下一个数字,即使这个数字更大,它也是正确的。那么,我如何解决这个问题,让它检查两个语句呢?抱歉解释得不好。谢了。