Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java A和B与国际象棋_Java - Fatal编程技术网

Java A和B与国际象棋

Java A和B与国际象棋,java,Java,我正在研究代码部队问题A和B以及国际象棋,具体如下: A.A和B以及每项测试的国际象棋时间限制每项测试1秒内存限制 测试256兆字节输入标准输出标准输出 A和B正在为编程竞赛做准备 为了训练他们的逻辑思维,更好地解决问题,A和B 决定下棋。在比赛中,一名球员想知道谁的位置是正确的 现在更强大了 对于每一个棋子,我们知道它的重量: the queen's weight is 9, the rook's weight is 5, the bishop's weight is 3, the knigh

我正在研究代码部队问题A和B以及国际象棋,具体如下:

A.A和B以及每项测试的国际象棋时间限制每项测试1秒内存限制 测试256兆字节输入标准输出标准输出

A和B正在为编程竞赛做准备

为了训练他们的逻辑思维,更好地解决问题,A和B 决定下棋。在比赛中,一名球员想知道谁的位置是正确的 现在更强大了

对于每一个棋子,我们知道它的重量:

the queen's weight is 9,
the rook's weight is 5,
the bishop's weight is 3,
the knight's weight is 3,
the pawn's weight is 1,
the king's weight isn't considered in evaluating position. 
运动员的重量等于他所有棋子的重量之和 董事会

因为A不喜欢数数,他让你帮他决定哪一个 球员的位置权重较大。输入

输入包含八行,每行八个字符-电路板的 描述

黑板上的白色部分用大写字母标记 黑色部分用小写字母标记

白色部分表示如下:代表女王的是 “Q”,车-作为“R”,主教-作为“B”,骑士-作为“N”,骑士 典当-作为“P”,国王-作为“K”

黑色部分表示为‘q’、‘r’、‘b’、‘n’、‘p’、‘k’, 分别

电路板上的一个空正方形标记为“.”一个点

不能保证给定的国际象棋位置可以在 一场真正的比赛。具体地说,可能存在任意的零 每种类型的数量,国王可能受到攻击等等。 输出

如果打印机位置的权重 白件的重量大于黑件的位置 件,如果黑色件的重量超过 白件的重量,如果白件的重量 白色和黑色是相等的。样本测试

Case 1

Input

...QK...
........
........
........
........
........
........
...rk...

Output

White


Case 2

Input

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

Output

Draw


Case 3:

Input

rppppppr
...k....
........
........
........
........
K...Q...
........

Output

Black

在第一个测试样品中,白色颗粒位置的重量 碎片等于9,黑色碎片位置的重量 等于5

在第二个测试样本中,测量黑色物体位置的重量 白色部分等于39

在第三个测试样品中,白色颗粒位置的重量 碎片等于9,黑色碎片位置的重量 等于16

我的代码是:

import java.util.Scanner;

public class chess {


    private final static int QUEEN = 9;
    private final static int ROOK = 5;
    private final static int BISHOP = 3;
    private final static int KNIGHT = 3;
    private final static int PAWN = 1;
    private final static int KING = 0;


    public static void main(String[] args) {

        int blackScore = 0;
        int whiteScore = 0;

        Scanner scan = new Scanner(System.in);

        String[] input = new String[8];
        input[0] = scan.nextLine();
        input[1] = scan.nextLine();
        input[2] = scan.nextLine();
        input[3] = scan.nextLine();
        input[4] = scan.nextLine();
        input[5] = scan.nextLine();
        input[6] = scan.nextLine();
        input[7] = scan.nextLine();

        for(int i = 0; i < input.length; i++) {
            if(input[i].contains("Q")) {
                whiteScore += QUEEN;
            }

            if(input[i].contains("R")) {
                whiteScore += ROOK;
            }

            if(input[i].contains("N")) {
                whiteScore += KNIGHT;
            }

            if(input[i].contains("B")) {
                whiteScore += BISHOP;
            }

            if(input[i].contains("P")) {
                whiteScore += PAWN;
            }

            if(input[i].contains("K")) {
                whiteScore += KING;
            }


            if(input[i].contains("q")) {
                blackScore += QUEEN;
            }

            if(input[i].contains("n")) {
                blackScore += KNIGHT;
            }

            if(input[i].contains("b")) {
                blackScore += BISHOP;
            }

            if(input[i].contains("p")) {
                blackScore += PAWN;
            }

            if(input[i].contains("k")) {
                blackScore += KING;
            }

            if(input[i].contains("r")) {
                blackScore += ROOK;
            }    


        }

        if(whiteScore != blackScore) {

            if(blackScore > whiteScore) {
                System.out.println("Black");
            }

            if (whiteScore > blackScore) {
                System.out.println("White");

            } 
        }else {
            System.out.println("Draw");
        }    


        System.out.println(whiteScore);
        System.out.println(blackScore);
    }

}

谁能解释我做错了什么?谢谢

我想你必须使用else-if语句而不是if语句,试试这个,我希望这有帮助

import java.util.Scanner;

public class chess {

private final static int QUEEN = 9;
private final static int ROOK = 5;
private final static int BISHOP = 3;
private final static int KNIGHT = 3;
private final static int PAWN = 1;
private final static int KING = 0;


public static void main(String[] args) {

    int blackScore = 0;
    int whiteScore = 0;

    Scanner scan = new Scanner(System.in);

    String[] input = new String[8];
    input[0] = scan.nextLine();
    input[1] = scan.nextLine();
    input[2] = scan.nextLine();
    input[3] = scan.nextLine();
    input[4] = scan.nextLine();
    input[5] = scan.nextLine();
    input[6] = scan.nextLine();
    input[7] = scan.nextLine();

    for(int i = 0; i < input.length; i++) {
        if(input[i].contains("Q")) {
            whiteScore += QUEEN;
        }

        else if(input[i].contains("R")) {
            whiteScore += ROOK;
        }

        else if(input[i].contains("N")) {
            whiteScore += KNIGHT;
        }

        else if(input[i].contains("B")) {
            whiteScore += BISHOP;
        }

        else if(input[i].contains("P")) {
            whiteScore += PAWN;
        }

        else if(input[i].contains("K")) {
            whiteScore += KING;
        }


        else if(input[i].contains("q")) {
            blackScore += QUEEN;
        }

        else if(input[i].contains("n")) {
            blackScore += KNIGHT;
        }

        else if(input[i].contains("b")) {
            blackScore += BISHOP;
        }

        else if(input[i].contains("p")) {
            blackScore += PAWN;
        }

        else if(input[i].contains("k")) {
            blackScore += KING;
        }

        else if(input[i].contains("r")) {
            blackScore += ROOK;
        }


    }

    if(whiteScore != blackScore) {

    if(blackScore > whiteScore) {
        System.out.println("Black");
    }

    if (whiteScore > blackScore) {
        System.out.println("White");

    } 
    }else {
        System.out.println("Draw");
    }


    System.out.println(whiteScore);
    System.out.println(blackScore);
}
}

问题是,只要在一条线上发现一个棋子出现的次数,就只包括该棋子的一个棋子的点数。看看你离解决方案有多近,我认为仅凭暗示就足够了

你看到了什么会让人觉得这是错误的?例如,国王和骑士都包含K。解释错误。当你运行这些输入时,你得到了什么?@PM77-1刚刚注意到。格式问题困扰着我。这是一个不正确的更改,因为每个输入行可能有多个类型的片段