【问题标题】:Java programming arrays? [closed]Java编程数组? [关闭]
【发布时间】:2015-02-14 07:35:27
【问题描述】:

我正在尝试使用数组创建井字游戏 (7x7)。 董事会必须看起来完全像这样:

+-+-+-+  
| | | |  
+-+-+-+  
| | | |   
+-+-+-+   
| | | |   
+-+-+-+  

我有什么:

import java.util.Arrays; 

String[][] board = new String [7][7];
    int rows = 7;
    int columns = 1;
    for (int i=0;i<rows;i++){
        for(int j=0;j<columns;j++){
            System.out.print("+-+-+-+");    
}

我不太确定如何将数组放入其中,当我使用“Arrays.toString”打印多维数组时,我会收到参考。

【问题讨论】:

  • 这是一个声明——问题在哪里?将绘图字符放在数组中似乎很奇怪——在表示棋盘时,更常见的是只将棋盘中的棋子存储在数组中,并从呈现它的逻辑中形成绘图字符。
  • 否定投票。因为没有尝试进行任何循环。这是一个非常基本的问题,它清楚地表明棋盘是(7x7),这意味着……有些东西需要循环 7 次。这是一个粗略的解决方案。 1. 循环 7 次的 for 循环。 2. 循环每次迭代的模数与 '2' 的值相对应,以交替您推入数组元素的字符串,3. printf() 解决对齐问题

标签: java arrays multidimensional-array


【解决方案1】:

在 Stack Overflow 上询问家庭作业和期末考试题? - 这是一年中的那个时候。我记得一位教授让我用星号打印菱形图案……我试着以 5 美元的价格出售每个菱形图案。我没有卖任何东西。没有企业需要这种技能,他们说他们的开发人员可以大大超过我的价格。

嗯,看起来您可以使用两个不同的数组、一对 for 循环、一个模运算符和一个打印函数来实现这一点:

public static void main(String[] args) {
    String[] a = { "+", "-", "+", "-", "+", "-", "+" }; //horizontal bars
    String[] b = { "|", " ", "|", " ", "|", " ", "|" }; //vertical bars

    //both arrays are the same size, so either length will do, or just set the i < 7 in the second loop parameter
    for (int i = 0; i < a.length; i++) {

        //i % 2 = the remainder of i divided by 2, example: 1/2 = 0 with remainder 1, so 1 % 2 = 1
        //you will see this again if you ever try to alternate colors in a programmatically generated table row for example
        if (i % 2 == 0) {
            print(a);
        } else {
            print(b);
        }
    }
}
static void print(String[] array) {
    //for all but the last in the array, print inline
    for (int i = 0; i < array.length - 1; i++) {
        System.out.print(array[i]);
    }
    //for the last array index, append a newline
    System.out.println(array[array.length - 1]);
}

【讨论】:

  • 加上 uno 作为介绍......你应该公开它,纳斯达克上市
【解决方案2】:

试试这个:

    String[] board = {"+-+-+-+"};
    String[] board2 = {"| | | |"};
    for(int x=0;x<4;x++)
    {
        System.out.println(board[0]);
        if(x==3)
        break;
        System.out.println(board2[0]);
    }

尝试弄清楚这段代码在做什么,如果您有任何问题,请随时发表评论并问我。

【讨论】:

  • 我在 Ideone.com 上运行了这个,因为我的计算机上目前没有 java 编译器。那里的间距似乎很好。
  • 感谢回答,为什么在for循环中使用4,为什么在3处中断?
  • 我在循环中使用 4,因为对于 7x7 板,您正在打印“+-+-+-+”4 次,并且正在打印“| | | |” 3次。如果我要删除 x=3 处的中断(这是循环从 0 开始以来第四次运行,并且像这样 0、1、2、3),那么程序也会打印“| | | |" 4次,但是我所做的是在它打印了“+-+-+-+” 4次之后,这意味着它已经打印了“| | | |” 3次,因为我们不想打印“| | | |”再多次,我们会中断并退出循环。
  • 如果您认为这是最佳答案,您可以通过点击答案评分下方的箭头来接受它
  • 好的,所以从技术上讲,您正在使用数组。但是您将它们用作标量,这是毫无意义的。和break 直接在if 下方,没有缩进和大括号?认真的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2011-03-24
  • 2013-04-23
  • 2010-09-14
  • 2010-11-19
  • 1970-01-01
  • 2011-03-10
相关资源
最近更新 更多