我正在为《战舰》编写一个placeShips方法。 它在大多数情况下都可以工作...除非当我试图放置一艘船时,并且遇到错误情况(从板载,在该位置的另一艘船等)时,它将在直到意识到它不应该的空间。 我尝试使用级联的if语句,但不确定如何解决此问题。 这是代码片段。 有五种不同的船,但这是仅将第一个船放置在10x10数组中且所有字符都初始化为〜的代码。

int count=1;
while(count<=5){
    start: {
    if(count==1){
    System.out.println("What row and column would you like to place your aircraft carrier?");
    System.out.println("Row?");
    int row1 = IO.readInt();
                    if(row1>9 || row1<0){
                    IO.reportBadInput();
                    break start;
                    }
    System.out.println("Column?");
    int column1 = IO.readInt();
                    if(column1>9 || column1<0){
                    IO.reportBadInput();
                    break start;
                    }

    System.out.println("How would you like to orient your aircraft carrier? 1. Down, 2. Up, 3. Left, 4. Right");
    int orientation = IO.readInt();
    if(orientation==1){ //oriented down

        for(int z=0; z<5; z++){ //places the aircraft carrier, DOWN
        if((row1+z)>=board.length){
            System.out.println("This will go off the board. You can't place your ship here! Try again.");
            IO.reportBadInput();
            break start;
        }

        else if(board[row1+z][column1]!='~'){
            System.out.println("Oops! You can't place your ship there. Ship already in this location. Try again.");
            IO.reportBadInput();
            break start;
        } //checks if there's anything else already in that space

        else{
            board[row1 + z][column1]= 'A';
        } 

        } 
    }
        if(orientation==2){ //oriented up

            for(int z=0; z<5; z++){ //places the aircraft carrier, UP ORIENTATION
            if((row1-z)<0){
                System.out.println("This will go off the board. You can't place your ship here! Try again.");
                IO.reportBadInput();
                break start;
            }
            else if(board[row1-z][column1]!='~'){
                System.out.println("Oops! You can't place your ship there. Ship already in this location. Try again.");
                IO.reportBadInput();
                break start;
            } //checks if there's anything else already in that space
            else{
                board[row1 - z][column1]= 'A';
            }

            }
        }

            if(orientation==3){

                for(int z=0; z<5; z++){ //places the aircraft carrier, LEFT ORIENTATION
                if((column1-z)<0){
                    System.out.println("This will go off the board. You can't place your ship here! Try again.");
                    IO.reportBadInput();
                    break start;
                }
                else if(board[row1][column1-z]!='~'){
                    System.out.println("Oops! You can't place your ship there. Ship already in this location. Try again.");
                    IO.reportBadInput();
                    break start;
                } //checks if there's anything else already in that space
                else{
                    board[row1][column1-z]= 'A'; 
                }

                }
            }


            if(orientation==4){

                for(int z=0; z<5; z++){ //places the aircraft carrier, RIGHT ORIENTATION
                if((column1+z)>=9){
                    System.out.println("This will go off the board. You can't place your ship here! Try again.");
                    IO.reportBadInput();
                    break start;
                }
                else if(board[row1][column1+z]!='~'){
                    System.out.println("Oops! You can't place your ship there. Ship already in this location. Try again.");
                    IO.reportBadInput();
                    break start;
                } //checks if there's anything else already in that space
                else{
                    board[row1][column1+z]= 'A';
                }

                }
}
    count++;
    }

  ask by user3552903 translate from so

本文未有回复,本站智能推荐:

4回复

检查数组是否“正确”(C ++)

一个正确的数组 假设我们有一个N长度的数组,由大写字母A,B和C组成。如果在数组中一个接一个地出现的每两个C字母之间,我们将数组称为“右数组”,还有更多A字母比B字母。 我的工作是发现一个给定的数组是否“正确”,如果是这样,我应该打印出“正确”,否则我应该打印多少件(Cs之间的位置
2回复

C:一种检查缓冲区中的函数并将其追加的更安全方法?

我有一个需要返回另一个日志记录功能时间的函数,它看起来像这样: 现在,我想主要的问题是检查缓冲区是否足够长,sizeof()返回指针大小,strlen似乎在两个不同的调用中随机返回0或诸如12之类的值。 我的第一个问题是,我如何能够安全地检测缓冲区的大小,这可能吗? 我的另一
2回复

Java布尔输入错误检查

所以我试图让用户输入他们的答案作为布尔值,然后对它进行错误检查,但这似乎不起作用。 我是在正确的轨道上还是有更好的方法来做到这一点? 我曾考虑过在输入是字符串的情况下执行此操作,只是将它与我​​分配给“ true”和“ false”的另外两个字符串进行比较,但是我的while循环是:
1回复

禁用Intellij IDEA中的实时错误检查?

Intellij IDEA在您键入时检查错误。 保存文件后,有没有办法只检查错误? 在Eclipse中,这是通过取消选中“常规-编辑器-结构化文本编辑器”->“键入时报告问题”来完成的。 Intellij IDEA中有类似的功能吗?
1回复

业务逻辑中推荐不必要的错误处理吗? 例如。 空检查/百分比限制检查等

我们通常会在业务逻辑中进行不必要的检查以避免失败。 例如。 如果我们确定它永远不会为null,为什么我们需要这个null检查? 这是一个好习惯吗? 我们需要'totalPpl<pplReached'检查吗? 问题是:我们不是通过进行此类检查来吞下一些基本问题吗
1回复

问题错误检查码

大家好,我有一个模拟ATM机的程序。 它使用我创建的帐户类,在用户输入0到999999之间的ID后为用户生成帐户。然后他们可以执行各种任务,例如查看余额,取款,存款等。我遇到了问题,但出现错误检查程序。 它编译时没有错误,并且在第一次循环时就可以完美运行。 但是,如果他们按exit并输入
1回复

在Java中检查项目时出错

我在下面的代码中的目标是检查输入是否比小数点后的两位长,然后引发异常。 我似乎无法正确理解。 我正在尝试使用indexOf到达小数点,然后我想检查它后面的部分的长度。 如果它大于2,我希望它引发异常。 有人对这种情况有一些提示吗? 我还想知道如何为该构造函数添加错误检查,因为我不
3回复

对textFields的无限关注循环

我有2个JTextFields: 这是我需要的功能: 当用户在txtJobType中键入“ administration”并点击选项卡(或单击离开)时,将进行错误检查,以查看该字段是否为空或输入的文本是否存在于数据库中。 我这样做的方式是: 因此,如果该字段不存在或文本为
2回复

在Java中进行错误检查:S启动并Q退出

我是一名目前正在学习Java基础课程的学生。 我正在编写一个代码,要求用户输入游戏的“开始”和“退出”。 所以我分别选择了字符串“ S”和“ Q”。 如果用户输入S,则游戏继续进行。 如果用户输入Q,程序将显示“谢谢您玩”或其他内容。 如果用户输入的不是S和Q,程序将再次询问直到获得有
4回复

如何使用for循环返回存储在数组中的打印行值

这个问题已经在这里有了答案 : 6年前关闭。 C ++-使用“ i”检查for循环中的不同变量 (3个答案) 因此,您可以按照以下非常简单但很长的路来做