java - 如何让我的程序只运行第二个输出?
问题描述
这是我的代码:
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 次,但我想要的只是第二次运行时的输出。第一次运行我的输入时,如何使程序不打印?
这是一个视觉效果: 描述
我想要的只是以蓝色突出显示的部分。我不想要未突出显示的部分。我该怎么办?
解决方案
您的打印循环位于运行两次的 for 循环内。所以它会打印第一次和第二次。您需要将打印语句移出嵌套循环并在所有其他循环完成后运行一个循环以打印值
推荐阅读
- apache-spark - 加入 Spark Databricks 上的数据爆炸
- linux - 即使安装了 http-server 和 angular-http-server,得到“bash: http-server: command not found”
- python - 根据浮点数绘制日期时间对象
- r - 在 Fisher 检验 R 中将优势比和 CI 与 p 值相结合
- javascript - 如果用户未登录反应如何隐藏导航
- java - 上传您自己的头像
- python - Python Dataframe:使用 astype 更改列类型失败
- json - 使用 ClickHouse 使用来自 Kafka 的嵌套 JSON 消息
- sql - T-SQL 在用作默认值的函数中使用列名作为参数
- java - 为什么我的累加器不增加并且总是返回零?