Java 我得到了错误的输出,我还需要一个简化的解决方案
我遇到了一个问题。代码是:Java 我得到了错误的输出,我还需要一个简化的解决方案,java,Java,我遇到了一个问题。代码是: Scanner input = new Scanner(System.in); int time = input.nextInt(); int line = input.nextInt(); input.nextline(); int[][] PrimaryArray = new int[12][11]; int[] Number = new int[12]; boolea
Scanner input = new Scanner(System.in);
int time = input.nextInt();
int line = input.nextInt();
input.nextline();
int[][] PrimaryArray = new int[12][11];
int[] Number = new int[12];
boolean[] dualPass = new boolean[12];
for (int i = 0; i < 12; i++) {
dualPass[i] = false;
}
for (int i = 0; i < line; i++) {
int SourceNode = input.nextInt();
int DistNode = input.nextInt();
input.nextLine();
if (SourceNode == 1) {
PrimaryArray[SourceNode][Number[1]] = DistNode;
Number[1]++;
}
if (SourceNode == 2) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[2] = true;
}
if (dualPass[2] != true) {
PrimaryArray[SourceNode][Number[2]] = DistNode;
Number[2]++;
}
dualPass[2] = false;
}
if (SourceNode == 3) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[3] = true;
}
if (dualPass[3] != true) {
PrimaryArray[SourceNode][Number[3]] = DistNode;
Number[3]++;
}
dualPass[3] = false;
}
if (SourceNode == 4) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[4] = true;
}
if (dualPass[4] != true) {
PrimaryArray[SourceNode][Number[4]] = DistNode;
Number[4]++;
}
dualPass[4] = false;
}
if (SourceNode == 5) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[5] = true;
}
if (dualPass[5] != true) {
PrimaryArray[SourceNode][Number[5]] = DistNode;
Number[5]++;
}
dualPass[5] = false;
}
if (SourceNode == 6) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[6] = true;
}
if (dualPass[6] != true) {
PrimaryArray[SourceNode][Number[6]] = DistNode;
Number[6]++;
}
dualPass[6] = false;
}
if (SourceNode == 7) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[7] = true;
}
if (dualPass[7] != true) {
PrimaryArray[SourceNode][Number[7]] = DistNode;
Number[7]++;
}
dualPass[7] = false;
}
if (SourceNode == 8) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[8] = true;
}
if (dualPass[8] != true) {
PrimaryArray[SourceNode][Number[8]] = DistNode;
Number[8]++;
}
dualPass[8] = false;
}
if (SourceNode == 9) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[9] = true;
}
if (dualPass[9] != true) {
PrimaryArray[SourceNode][Number[9]] = DistNode;
Number[9]++;
}
dualPass[9] = false;
}
if (SourceNode == 10) {
for (int j = 0; j < PrimaryArray[DistNode].length; j++) {
if (PrimaryArray[DistNode][j] == SourceNode)
dualPass[10] = true;
}
if (dualPass[10] != true) {
PrimaryArray[SourceNode][Number[10]] = DistNode;
Number[10]++;
}
dualPass[10] = false;
}
}
for (int i = 1; i < 11; i++) {
System.out.println(PrimaryArray[i][1]);
}
每个输出必须是第二个成员。我想在这段代码中说,例如:
当我们进入时:12
然后是21
它必须忽略2 1
代码输出错误,我不理解。对于您的第一个问题,即使是错误的地方,也有答案,只需替换您的
// ...
for (int i = 0; i < line; i++) {
int sourceNode = input.nextInt();
System.out.println("SourceNode: " + sourceNode);
int distNode = input.nextInt();
System.out.println("DistNode: " + distNode );
input.nextLine();
// you will get same response with following code instead all your if's:
for (int j = 0; j < primaryArray[distNode].length; j++) {
if (primaryArray[distNode][j] == sourceNode)
dualPass[sourceNode] = true;
}
if (dualPass[sourceNode] != true) {
primaryArray[sourceNode][number[sourceNode]] = distNode;
number[sourceNode]++;
}
dualPass[sourceNode] = false;
// end of code change
}
// ...
只有当我们获得更多信息时,才能回答您的第二个答案,我还不知道您的代码应该做什么。1。从遵循命名约定开始。java中的变量名以小写字母开头。除此之外,还有一个地方可以让代码更清晰,而不是StackOverflow。2.我不知道你在第二点中问了什么,也不知道程序应该做什么。输出必须是每个成员的第二个-什么?我对这里输入/输出之间的关系感到非常困惑。
// ...
for (int i = 0; i < line; i++) {
int sourceNode = input.nextInt();
System.out.println("SourceNode: " + sourceNode);
int distNode = input.nextInt();
System.out.println("DistNode: " + distNode );
input.nextLine();
// you will get same response with following code instead all your if's:
for (int j = 0; j < primaryArray[distNode].length; j++) {
if (primaryArray[distNode][j] == sourceNode)
dualPass[sourceNode] = true;
}
if (dualPass[sourceNode] != true) {
primaryArray[sourceNode][number[sourceNode]] = distNode;
number[sourceNode]++;
}
dualPass[sourceNode] = false;
// end of code change
}
// ...