Java 有人能告诉我为什么我的生命游戏密码不起作用吗?
eclipse中没有显示任何错误,但是当我运行代码时,应用程序中什么也没有发生。它被分成三类。第一个类包含if语句。我想知道我的问题是否在这里Java 有人能告诉我为什么我的生命游戏密码不起作用吗?,java,conways-game-of-life,Java,Conways Game Of Life,eclipse中没有显示任何错误,但是当我运行代码时,应用程序中什么也没有发生。它被分成三类。第一个类包含if语句。我想知道我的问题是否在这里 package course.infsci0017.lab04; import java.util.Scanner; import javax.swing.JFrame; public class GameOfLife { public static void main(String[] args) { in
package course.infsci0017.lab04;
import java.util.Scanner;
import javax.swing.JFrame;
public class GameOfLife {
public static void main(String[] args) {
int testCase = 1;
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("Conway's Game of Life");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Cell[][] universe = new Cell[100][100];
for (int x = 0; x < universe.length-1; x++) {
for (int y = 0; y < universe[x].length-1; y++) {
universe[x][y] = new Cell();
}
}
if (testCase == 1) {
universe[3][2].calculateNext(3);
universe[3][2].updateCurrent();
universe[3][3].calculateNext(3);
universe[3][3].updateCurrent();
universe[3][4].calculateNext(3);
universe[3][4].updateCurrent();
} else if (testCase == 2) {
universe[49][50].calculateNext(3);
universe[49][50].updateCurrent();
universe[49][51].calculateNext(3);
universe[49][51].updateCurrent();
universe[50][49].calculateNext(3);
universe[50][49].updateCurrent();
universe[50][50].calculateNext(3);
universe[50][50].updateCurrent();
universe[51][50].calculateNext(3);
universe[51][50].updateCurrent();
} else {
}
UniverseComponent component = new UniverseComponent(universe);
frame.add(component);
frame.setVisible(true);
Scanner in = new Scanner(System.in);
String input = in.nextLine();
while (input.length() == 0) {
int neighborCount = 0;
for (int x=1; x<universe.length-2; x++) {
for (int y=1; y<universe[x].length-2; y++) {
neighborCount = 0;
if (universe[x-1][y-1].isAlive()) {
neighborCount++;
}
if (universe[x-1][y].isAlive()) {
neighborCount++;
}
if (universe[x-1][y+1].isAlive()) {
neighborCount++;
}
if (universe[x][y-1].isAlive()) {
neighborCount++;
}
if (universe[x][y+1].isAlive()) {
neighborCount++;
}
if (universe[x+1][y-1].isAlive()) {
neighborCount++;
}
if (universe[x+1][y].isAlive()) {
neighborCount++;
}
if (universe[x+1][y+1].isAlive()) {
neighborCount++;
}
universe[x][y].calculateNext(neighborCount);
}
}
for (int x=1; x<universe.length-2; x++) {
for (int y=1; y<universe[x].length-2; y++) {
universe[x][y].updateCurrent();
}
}
component.repaint();
input = in.nextLine();
}
in.close();
}
}
package-course.infsci0017.lab04;
导入java.util.Scanner;
导入javax.swing.JFrame;
公共生活类游戏{
公共静态void main(字符串[]args){
int testCase=1;
JFrame=新JFrame();
框架。设置尺寸(500500);
frame.setTitle(“康威的人生游戏”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
单元格[][]宇宙=新单元格[100][100];
对于(int x=0;x
while(input.length()=0)
但是如果您在输入中键入任何内容,它将不等于零,因此循环将不会执行,程序将退出
该程序的设计似乎只允许用户点击“回车”,而不在控制台上键入任何单词。也就是说,如果您只键入enter,则将执行循环,否则程序将退出
这显然不是你自己的代码,因为它看起来根本没有bug,但你对它的使用是不正确的。请更诚实地回答你的问题(我希望你没有抄袭).Genius这个问题的标题。你说“应用程序中什么都没有发生”是什么意思?JFrame显示了吗?如果没有,你是否尝试过输入一些println来查看代码是否达到了要求?@HXCaine窗口会出现以运行游戏,但无论我在控制台中键入什么,它都不会发生任何变化。为什么人们不使用调试器现在?Java对交互式调试的支持非常好,人们仍然认为盯着源代码是发现bug的有效方法…?我是简单地更改0还是有其他方法?当我尝试删除或更改它时,它会给我一个错误。我为我的不熟练道歉,我对Java非常陌生
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class UniverseComponent extends JComponent {
private Cell[][] universe;
public UniverseComponent(Cell[][] universe) {
super();
this.universe = universe;
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
for (int x=0; x<universe.length-1; x++) {
for (int y=0; y<universe[x].length-1; y++) {
if (universe[x][y].isAlive()) {
g2.fillRect(x*5, y*5, 4, 4);
}
}
}
}
}
public class Cell {
private boolean current;
private boolean next;
public Cell() {
current = false;
next = false;
}
public Cell(int neighborCount) {
calculateNext(neighborCount);
updateCurrent();
}
public void calculateNext(int neighborCount) {
if (current) {
if ((neighborCount < 2) || (neighborCount > 3)) {
next = false;
} else {
next = true;
}
} else {
if (neighborCount == 3) {
next = true;
} else {
next = false;
}
}
}
public void updateCurrent() {
current = next;
}
public boolean isAlive() {
return current;
}
}