Java 循环通过选项时堆栈溢出错误
我正在做一个练习,我遇到了一些事情。下面的代码给了我一个stackoverflow错误,但我不知道为什么,因为我的代码应该停止Java 循环通过选项时堆栈溢出错误,java,stack-overflow,Java,Stack Overflow,我正在做一个练习,我遇到了一些事情。下面的代码给了我一个stackoverflow错误,但我不知道为什么,因为我的代码应该停止 class Options { private int amount; private ArrayList<Integer> pieces; public void execute() { pieces = new ArrayList<Integer>(); pieces.add(5);
class Options {
private int amount;
private ArrayList<Integer> pieces;
public void execute() {
pieces = new ArrayList<Integer>();
pieces.add(5);
pieces.add(2);
pieces.add(3);
amount = pieces.size();
combinations(new StringBuilder());
}
public void combinations(StringBuilder current) {
if(current.length() == pieces.size()) {
System.out.println(current.toString());
return;
}
for(int i = 0; i < amount; i++) {
current.append(pieces.get(i));
combinations(current);
}
}
}
类选项{
私人整数金额;
私人阵列列表;
public void execute(){
碎片=新的ArrayList();
增加(5);
增加(2);
增加(3);
数量=件。尺寸();
组合(新StringBuilder());
}
公共空心组合(StringBuilder当前){
如果(当前.length()==个数.size()){
System.out.println(current.toString());
返回;
}
对于(int i=0;i
它只打印第一个输出(555)
谢谢。添加一个返回以结束递归
public void combinations(StringBuilder current) {
if(current.length() == pieces.size()) {
System.out.println(current.toString());
return; // <-- like so.
}
for(int i = 0; i < amount; i++) {
current.append(pieces.get(i));
combinations(current);
}
}
编辑
static class Options {
private List<Integer> pieces;
public void execute() {
pieces = new ArrayList<>();
pieces.add(5);
pieces.add(2);
pieces.add(3);
combinations(new StringBuilder());
}
public void combinations(StringBuilder current) {
if (current.length() == pieces.size()) {
System.out.println(current.toString());
} else {
for (int i = current.length(); i < pieces.size(); i++) {
current.append(pieces.get(i));
combinations(current);
}
}
}
}
public static void main(String[] args) {
Options o = new Options();
o.execute();
System.out.println(o.pieces);
}
添加一个返回以结束递归
public void combinations(StringBuilder current) {
if(current.length() == pieces.size()) {
System.out.println(current.toString());
return; // <-- like so.
}
for(int i = 0; i < amount; i++) {
current.append(pieces.get(i));
combinations(current);
}
}
编辑
static class Options {
private List<Integer> pieces;
public void execute() {
pieces = new ArrayList<>();
pieces.add(5);
pieces.add(2);
pieces.add(3);
combinations(new StringBuilder());
}
public void combinations(StringBuilder current) {
if (current.length() == pieces.size()) {
System.out.println(current.toString());
} else {
for (int i = current.length(); i < pieces.size(); i++) {
current.append(pieces.get(i));
combinations(current);
}
}
}
}
public static void main(String[] args) {
Options o = new Options();
o.execute();
System.out.println(o.pieces);
}
添加一个返回以结束递归
public void combinations(StringBuilder current) {
if(current.length() == pieces.size()) {
System.out.println(current.toString());
return; // <-- like so.
}
for(int i = 0; i < amount; i++) {
current.append(pieces.get(i));
combinations(current);
}
}
编辑
static class Options {
private List<Integer> pieces;
public void execute() {
pieces = new ArrayList<>();
pieces.add(5);
pieces.add(2);
pieces.add(3);
combinations(new StringBuilder());
}
public void combinations(StringBuilder current) {
if (current.length() == pieces.size()) {
System.out.println(current.toString());
} else {
for (int i = current.length(); i < pieces.size(); i++) {
current.append(pieces.get(i));
combinations(current);
}
}
}
}
public static void main(String[] args) {
Options o = new Options();
o.execute();
System.out.println(o.pieces);
}
添加一个返回以结束递归
public void combinations(StringBuilder current) {
if(current.length() == pieces.size()) {
System.out.println(current.toString());
return; // <-- like so.
}
for(int i = 0; i < amount; i++) {
current.append(pieces.get(i));
combinations(current);
}
}
编辑
static class Options {
private List<Integer> pieces;
public void execute() {
pieces = new ArrayList<>();
pieces.add(5);
pieces.add(2);
pieces.add(3);
combinations(new StringBuilder());
}
public void combinations(StringBuilder current) {
if (current.length() == pieces.size()) {
System.out.println(current.toString());
} else {
for (int i = current.length(); i < pieces.size(); i++) {
current.append(pieces.get(i));
combinations(current);
}
}
}
}
public static void main(String[] args) {
Options o = new Options();
o.execute();
System.out.println(o.pieces);
}
@Bartweselink不再抛出堆栈溢出错误,是吗?不幸的是,它仍然抛出。线程“main”java.lang中出现异常。StackOverflowError@BartWesselink编辑。如果你需要更多的帮助,你必须更加具体。你给出的例子没有出错。。。我试试看。Thanks@BartWesselink不再抛出堆栈溢出错误,是吗?不幸的是,它仍然抛出。线程“main”java.lang中出现异常。StackOverflowError@BartWesselink编辑。如果你需要更多的帮助,你必须更加具体。你给出的例子没有出错。。。我试试看。Thanks@BartWesselink不再抛出堆栈溢出错误,是吗?不幸的是,它仍然抛出。线程“main”java.lang中出现异常。StackOverflowError@BartWesselink编辑。如果你需要更多的帮助,你必须更加具体。你给出的例子没有出错。。。我试试看。Thanks@BartWesselink不再抛出堆栈溢出错误,是吗?不幸的是,它仍然抛出。线程“main”java.lang中出现异常。StackOverflowError@BartWesselink编辑。如果你需要更多的帮助,你必须更加具体。你给出的例子没有出错。。。我试试看。谢谢