Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 - Fatal编程技术网

Java 不断地向前和向后推进指数,没有循环

Java 不断地向前和向后推进指数,没有循环,java,Java,我正在使用ArrayList进行一个项目,在这个项目中,我只需要推进一次索引,但当它到达最后一个索引时,我需要它返回到0索引,然后重新开始。如果我可以使用循环,这就足够简单了,但我需要它在调用方法时只向前(或向后)推进一个索引。 有人对如何做到这一点有什么建议吗 我为缺乏信息而道歉。我正在制作一个布尔对象的arraylist,我要做的是使它在调用我的方法时,使下一个索引为真(其他为假),我的问题是让它在最后一个索引处停止,并反向运行 例如,想象一下拉森扫描仪。我的问题是,虽然这对于循环来说很简单

我正在使用ArrayList进行一个项目,在这个项目中,我只需要推进一次索引,但当它到达最后一个索引时,我需要它返回到0索引,然后重新开始。如果我可以使用循环,这就足够简单了,但我需要它在调用方法时只向前(或向后)推进一个索引。 有人对如何做到这一点有什么建议吗

我为缺乏信息而道歉。我正在制作一个布尔对象的arraylist,我要做的是使它在调用我的方法时,使下一个索引为真(其他为假),我的问题是让它在最后一个索引处停止,并反向运行

例如,想象一下拉森扫描仪。我的问题是,虽然这对于循环来说很简单,但我需要它在调用方法时只前进一个索引,而不是不断前进

真假假假

假真假假

假假真假

假假假真

假假真假

假真假假


很抱歉造成混淆假设数组是一个字段:

Object[] arr;
boolean backwards; //init: false
int current; //init: 0

public Object getNextObject() {
    if (arr.length == 0) {
        throw new IllegalArgumentException("Array cannot be empty!");
    }
    int index;
    if (backwards) {
        index = --current;
        if (index <= 0) {
            backwards = false;
            index = 0;
        }
    } else {
        index = ++current;
        if (index >= arr.length) {
            backwards = true;
            index = arr.length - 1;
        }
    }
    Object back = arr[index];
    current = index;
    return back;
}
Object[]arr;
布尔向后//init:false
电流//初始化:0
公共对象getNextObject(){
如果(arr.length==0){
抛出新的IllegalArgumentException(“数组不能为空!”);
}
整数指数;
如果(向后){
指数=--当前;
如果(索引=arr.length){
向后=正确;
索引=arr.length-1;
}
}
对象返回=arr[索引];
电流=指数;
返回;
}

这基本上也适用于您使用的任何数据结构(将
.length
.size()
等进行交换)

假设数组是一个字段:

Object[] arr;
boolean backwards; //init: false
int current; //init: 0

public Object getNextObject() {
    if (arr.length == 0) {
        throw new IllegalArgumentException("Array cannot be empty!");
    }
    int index;
    if (backwards) {
        index = --current;
        if (index <= 0) {
            backwards = false;
            index = 0;
        }
    } else {
        index = ++current;
        if (index >= arr.length) {
            backwards = true;
            index = arr.length - 1;
        }
    }
    Object back = arr[index];
    current = index;
    return back;
}
Object[]arr;
布尔向后//init:false
电流//初始化:0
公共对象getNextObject(){
如果(arr.length==0){
抛出新的IllegalArgumentException(“数组不能为空!”);
}
整数指数;
如果(向后){
指数=--当前;
如果(索引=arr.length){
向后=正确;
索引=arr.length-1;
}
}
对象返回=arr[索引];
电流=指数;
返回;
}

这基本上也适用于您使用的任何数据结构(将
.length
.size()
等进行交换)

假设数组是一个字段:

Object[] arr;
boolean backwards; //init: false
int current; //init: 0

public Object getNextObject() {
    if (arr.length == 0) {
        throw new IllegalArgumentException("Array cannot be empty!");
    }
    int index;
    if (backwards) {
        index = --current;
        if (index <= 0) {
            backwards = false;
            index = 0;
        }
    } else {
        index = ++current;
        if (index >= arr.length) {
            backwards = true;
            index = arr.length - 1;
        }
    }
    Object back = arr[index];
    current = index;
    return back;
}
Object[]arr;
布尔向后//init:false
电流//初始化:0
公共对象getNextObject(){
如果(arr.length==0){
抛出新的IllegalArgumentException(“数组不能为空!”);
}
整数指数;
如果(向后){
指数=--当前;
如果(索引=arr.length){
向后=正确;
索引=arr.length-1;
}
}
对象返回=arr[索引];
电流=指数;
返回;
}

这基本上也适用于您使用的任何数据结构(将
.length
.size()
等进行交换)

假设数组是一个字段:

Object[] arr;
boolean backwards; //init: false
int current; //init: 0

public Object getNextObject() {
    if (arr.length == 0) {
        throw new IllegalArgumentException("Array cannot be empty!");
    }
    int index;
    if (backwards) {
        index = --current;
        if (index <= 0) {
            backwards = false;
            index = 0;
        }
    } else {
        index = ++current;
        if (index >= arr.length) {
            backwards = true;
            index = arr.length - 1;
        }
    }
    Object back = arr[index];
    current = index;
    return back;
}
Object[]arr;
布尔向后//init:false
电流//初始化:0
公共对象getNextObject(){
如果(arr.length==0){
抛出新的IllegalArgumentException(“数组不能为空!”);
}
整数指数;
如果(向后){
指数=--当前;
如果(索引=arr.length){
向后=正确;
索引=arr.length-1;
}
}
对象返回=arr[索引];
电流=指数;
返回;
}


这基本上也适用于您使用的任何数据结构(将
.length
.size()
等进行交换)

您迭代的对象是什么类型的?您正在寻找while循环,不是吗?看看。。链接列表?与你的问题相比,我不完全确定我的答案在哪里失败。没有。我对其他人的澄清进行了更正。你的回答成功了。谢谢你在迭代什么类型的对象?你在寻找while循环,不是吗?看看。。链接列表?与你的问题相比,我不完全确定我的答案在哪里失败。没有。我对其他人的澄清进行了更正。你的回答成功了。谢谢你在迭代什么类型的对象?你在寻找while循环,不是吗?看看。。链接列表?与你的问题相比,我不完全确定我的答案在哪里失败。没有。我对其他人的澄清进行了更正。你的回答成功了。谢谢你在迭代什么类型的对象?你在寻找while循环,不是吗?看看。。链接列表?与你的问题相比,我不完全确定我的答案在哪里失败。没有。我对其他人的澄清进行了更正。你的回答成功了。谢谢最后,您可能需要跟踪方向,相应地更新索引,并更改索引两端的方向array@michel-啊哈,我错了!关于这个问题的一个小误读,我将更新关闭,您可能需要跟踪方向,相应地更新索引,并在索引的两端更改方向array@michel-啊哈,我错了!关于这个问题的一个小误读,我将更新关闭,您可能需要跟踪方向,相应地更新索引,并在索引的两端更改方向array@michel-啊哈,我错了!关于这个问题的一个小误读,我将更新关闭,您可能需要跟踪方向,相应地更新索引,并在索引的两端更改方向array@michel-啊哈,我错了!对这个问题有点误读,我会更新的