首页 > 解决方案 > 如何让我的程序只运行第二个输出?

问题描述

这是我的代码:

import java.util.Scanner;
public class Chapter10_NextGeneration {
public static void main(String[]args) {
    Scanner sc=new Scanner(System.in);
    System.out.println("Type in your cell positions(ie 8,A,D,D,A,D,D,A,A,2 - NO SPACES & CASE SENSITIVE): ");
    String positions_str=sc.nextLine();
    sc.close();
    String[] cells=positions_str.split(",");
    String[] next_generation=new String[cells.length-2];x
    for(int j=0; j < Integer.parseInt(cells[cells.length-1]); j++) {
    for(int i=1;i<cells.length-1;i++) {
        if(i-1<1) { 
            if(cells[i+1].equals("D")) {
                next_generation[i-1]="D";
            }
            else {
                next_generation[i-1]="A";
            }
        }
        else if(i+1==cells.length-1) {
            if(cells[i-1].equals("D")) {
                next_generation[i-1]="D";
            }
            else {
                next_generation[i-1]="A";
            }
        }
        else if((cells[i-1].equals("A") && cells[i+1].equals("D")) || (cells[i-1].equals("D") && cells[i+1].equals("A"))) {
                next_generation[i - 1]="A";
            }
        else if((cells[i-1].equals("A") && cells[i+1].equals("A")) || (cells[i-1].equals("D") && cells[i+1].equals("D"))) {
                next_generation[i - 1]="D";
            }
    }
        for (int i = 0; i < next_generation.length; i++) {
            cells[i+1]=next_generation[i];
            System.out.print(next_generation[i]);
        }
    }
}

}

我无法让我的程序只打印最终输出。当我的输入是8,A,D,D,A,D,D,A,A,2,输出应该是AAADADDA,但程序打印DAADAAAAAAADADDA。输入末尾的 2 运行程序 2 次,但我想要的只是第二次运行时的输出。第一次运行我的输入时,如何使程序不打印?

这是一个视觉效果: 描述

我想要的只是以蓝色突出显示的部分。我不想要未突出显示的部分。我该怎么办?

标签: javaloops

解决方案


您的打印循环位于运行两次的 for 循环内。所以它会打印第一次和第二次。您需要将打印语句移出嵌套循环并在所有其他循环完成后运行一个循环以打印值


推荐阅读