首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >A、B、国际象棋

A、B、国际象棋
EN

Stack Overflow用户
提问于 2015-03-13 19:54:07
回答 2查看 180关注 0票数 0

我正在努力解决"A和B及国际象棋“问题,其内容如下:

A、B和国际象棋每次测试的时间限制1秒内存限制每测试256 A.输入标准输入输出标准输出 A和B正在为节目比赛做准备。 为了训练他们的逻辑思维,更好地解决问题,A和B决定下棋。在比赛中,A想知道谁的位置现在更强了。 我们知道每一个棋子的重量: 女王的体重是9,鲁克的重量是5,主教的重量是3,骑士的重量是3,典当的重量是1,在评估位置时不考虑国王的重量。 运动员的体重等于棋盘上所有棋子的重量之和。 由于A不喜欢计数,他要求你帮助他确定哪个球员的位置权重更大。输入 输入包含8行,每一行8个字符--董事会的描述。 黑板上的白片用大写字母标记,黑色部分用小写字母标记。 白字的意思如下:女王的代表是'Q',鲁克是'R',主教是‘B’,骑士是'N',当铺是'P',国王是'K‘。 黑点分别表示为'q','r','b','n','p','k‘。 板上的一个空方格标记为“”。(一个点)。 这并不能保证给定的棋子位置可以在一场真正的比赛中实现。具体来说,每种类型都有任意数量(可能为零)的碎片,国王可能受到攻击等等。输出 打印“白色”(无引号),如果白件的位置重量大于黑件的重量,则打印“黑色”,如果黑片的重量大于白件的重量,则打印“绘制”,如果白色和黑色的重量相等。样本测试 例1输入...QK.........rk...输出白色案例2输入rnbqkbnr pppppppp ....PPPPPPPP输出绘制案例3:输入rppppppr ...k.....K.Q.输出黑 备注 在第一个测试样本中,白件位置的重量等于9,黑件位置的重量等于5。 在第二次测试样本中,黑片和白片位置的权重为39。 在第三个测试样本中,白件位置的重量等于9,黑件位置的重量等于16。

我的代码是:

代码语言:javascript
复制
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);
    }

}

有人能解释我做错了什么吗?谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2015-03-13 20:04:03

我认为你必须使用“否则如果”语句,而不是“如果”,尝试这个,我希望这有帮助。

代码语言:javascript
复制
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);
}
}
票数 0
EN

Stack Overflow用户

发布于 2015-03-13 20:25:49

问题是,只要在一条线上发现棋子上出现的任何数量的棋子,你就只包括棋子中某一个的点数。看看你离解决方案有多近,我认为光是暗示就足够了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29040865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档