Java 仅编辑一个阵列元素时编辑的所有阵列元素
我是一个java的新手,刚刚起步 我有这个问题:Java 仅编辑一个阵列元素时编辑的所有阵列元素,java,arrays,eclipse,hashmap,Java,Arrays,Eclipse,Hashmap,我是一个java的新手,刚刚起步 我有这个问题:HashMap HashMap <String,boolean[]> calendar = new HashMap<String, boolean[]>(); (所有的System.out.println();仅用于调试。) 我真的不知道哪一行设置了所有的false..需要记住的一件重要事情是: boolean[] intervals = new boolean[3]; 将创建一个包含以下内容的数组:[false,fal
HashMap
HashMap <String,boolean[]> calendar = new HashMap<String, boolean[]>();
(所有的System.out.println();
仅用于调试。)
我真的不知道哪一行设置了所有的
false
..需要记住的一件重要事情是:
boolean[] intervals = new boolean[3];
将创建一个包含以下内容的数组:[false,false,false]
。看来问题可能与此有关
我已经测试了您的代码,但它不是100%清楚什么是起点,但是如果您在setFree()
之前运行calledday()
。为了让一天充满间隔,我想你会得到预期的结果
我所做的是:
static int numberOfIntervalls = 12;
static Map<String,boolean[]> calendar = new HashMap<>();
public static void main(String[] args) {
summonDay("01010001");
setFree(3, false, "01010001");
}
private static void summonDay(String _day) {
boolean[] intervals = new boolean[numberOfIntervalls];
System.out.print("Summoned " + _day + " ");
for (int i = 0; i < numberOfIntervalls; i++) {
intervals[i] = true;
System.out.print(intervals[i] + ", ");
}
System.out.println(".");
calendar.put(_day, intervals);
}
public static void setFree(int _time, boolean _free, String _day) {
int time = _time - 1;
boolean[] intervals = new boolean[numberOfIntervalls];
if(calendar.containsKey(_day)) {
System.out.println("Contains " + _day);
intervals = calendar.get(_day);
intervals[time] = _free;
System.out.println(intervals[time]);
if(allElementsTheSameBool(intervals) && _free)
calendar.remove(_day);
else
calendar.put(_day, intervals);
}else {
if(!_free) {
summonDay(_day);
intervals[time] = false;
calendar.put(_day, intervals);
}
}
System.out.println("-------");
for (int i = 0; i <calendar.get(_day).length; i++) {
System.out.print(calendar.get(_day)[i] + ", ");
}
}
因此,它从12true
s开始,在调用setFree()
后,它释放了第三个间隔
问题似乎在于您忽略了以下内容:
for (int i = 0; i < numberOfIntervalls; i++) {
intervals[i] = true;
System.out.print(intervals[i] + ", ");
}
for(int i=0;i
当创建一个
日
时,这就是所有假
间隔的原因
请发布整个代码。@michalwa done:-)遗憾的是,很难说出您的代码试图做什么。如果您将其剥离为不适合您的核心功能,则会有所帮助。@michalwa这是setFree()方法。我以前只使用此方法作为代码。您是否在调用setFree()
之前调用courday()
?
Summoned 01010001 true, true, true, true, true, true, true, true, true, true, true, true, .
Contains 01010001
false
-------
true, true, false, true, true, true, true, true, true, true, true, true,
Process finished with exit code 0
for (int i = 0; i < numberOfIntervalls; i++) {
intervals[i] = true;
System.out.print(intervals[i] + ", ");
}