所以这就是我现在所拥有的:
public static void main(String[] args) {
Calendar[][] times = new Calendar[10][2];
Calendar begin = Calendar.getInstance();
for(int i = 0; i < 10; i++) {
times[i][0] = begin;
begin.add(Calendar.MINUTE, 120);
times[i][1] = begin;
}
for(int i = 0; i < 10; i++) {
System.out.println("Start time:" + times[i][0].getTime() + " and end time is: " + times[i][1].getTime());
}
}
根据我对如何在Calendar类中工作的理解,我希望时间[0] [0]是编译时间,时间[0] [1]将来是120分钟。接下来运行循环时间[1] [0]等于[0] [1]次,时间[1] [1]将等于120分钟。这是不正确的?它目前为阵列的每个成员输出相同的时间。
编辑:感谢大家的帮助,这里是正确的代码:
public static void main(String[] args) {
Calendar[][] times = new Calendar[10][2];
Calendar begin = Calendar.getInstance();
for(int i = 0; i < 10; i++) {
times[i][0] = (Calendar) begin.clone();
begin.add(Calendar.MINUTE, 120);
times[i][1] = (Calendar) begin.clone();
}
for(int i = 0; i < 10; i++) {
System.out.println("Start time:" + times[i][0].getTime() + " and end time is: " + times[i][1].getTime());
}
}
答案 0 :(得分:0)
您将times
的引用分配给begin
数组中的所有对象。你实际上做的是改变times[i][0] = (Calendar) begin.clone();
Calendar hourLater = (Calendar) begin.clone();
hourLater(Calendar.MINUTE, 120);
times[i][1] = hourLater;
begin = hourLater;
的相同值 - 它是从所有数组元素引用的。
如果您需要以某种方式相对于现有的新日历实例,您可能想要克隆它:
I am loop
答案 1 :(得分:0)
import java.util.*;
public class HelloWorld{
public static void main(String []args){
Calendar[][] times = new Calendar[10][2];
Calendar begin = Calendar.getInstance();
for(int i = 0; i < 10; i++) {
times[i][0] = begin;
begin = (Calendar)begin.clone();
begin.add(Calendar.MINUTE, 120);
times[i][1] = begin;
}
for(int i = 0; i < 10; i++) {
System.out.println("Start time:" + times[i][0].getTime() + " and end time is: " + times[i][1].getTime());
}
}
}