Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅编辑一个阵列元素时编辑的所有阵列元素_Java_Arrays_Eclipse_Hashmap - Fatal编程技术网

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

我是一个java的新手,刚刚起步

我有这个问题:
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] + ", ");
    }
}
因此,它从12
true
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] + ", ");
}