Java 如何打印二维数组?
我已经操纵了一个[20][20]二维数组。简单地说,我正在做一个海龟项目,用户输入指示,如向上画笔=0和向下画笔=1。当笔向下时,单个阵列位置,例如[3][4]标记为“1” 我的程序的最后一步是打印出20/20阵列。我不知道如何打印它,我需要将“1”替换为“X”。print命令实际上是父程序将调用的类中的一个方法。我知道我必须使用循环Java 如何打印二维数组?,java,Java,我已经操纵了一个[20][20]二维数组。简单地说,我正在做一个海龟项目,用户输入指示,如向上画笔=0和向下画笔=1。当笔向下时,单个阵列位置,例如[3][4]标记为“1” 我的程序的最后一步是打印出20/20阵列。我不知道如何打印它,我需要将“1”替换为“X”。print命令实际上是父程序将调用的类中的一个方法。我知道我必须使用循环 public void printGrid() { System.out.println... } 您应该按行循环,然后按列循环,其结构如下 for .
public void printGrid() {
System.out.println...
}
您应该按行循环,然后按列循环,其结构如下
for ...row index...
for ...column index...
print
但我想这是家庭作业,你自己试试吧
交换for循环中的行/列索引,具体取决于您是否需要先遍历然后向下,而不是先遍历再遍历。public void printGrid()
public void printGrid()
{
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 20; j++)
{
System.out.printf("%5d ", a[i][j]);
}
System.out.println();
}
}
{
对于(int i=0;i<20;i++)
{
对于(int j=0;j<20;j++)
{
System.out.printf(“%5d”,a[i][j]);
}
System.out.println();
}
}
以及取代
public void replaceGrid()
{
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
if (a[i][j] == 1)
a[i][j] = x;
}
}
}
public void replaceGrid()
{
对于(int i=0;i<20;i++)
{
对于(int j=0;j<20;j++)
{
如果(a[i][j]==1)
a[i][j]=x;
}
}
}
您可以一次完成这一切:
public void printAndReplaceGrid()
{
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 20; j++)
{
if (a[i][j] == 1)
a[i][j] = x;
System.out.printf("%5d ", a[i][j]);
}
System.out.println();
}
}
public void print和placegrid()
{
对于(int i=0;i<20;i++)
{
对于(int j=0;j<20;j++)
{
如果(a[i][j]==1)
a[i][j]=x;
System.out.printf(“%5d”,a[i][j]);
}
System.out.println();
}
}
我在另一个问题中回答了类似的问题
public class Snippet {
public static void main(String[] args) {
int [][]lst = new int[10][10];
for (int[] arr : lst) {
System.out.println(Arrays.toString(arr));
}
}
}
因为“X”是一个字符而不是int,所以实际上不能在矩阵本身中替换它,但是,下面的代码应该在遇到1时打印一个“X”字符
public void printGrid(int[][] in){
for(int i = 0; i < 20; i++){
for(int j = 0; j < 20; j++){
if(in[i][j] == 1)
System.out.print('X' + "\t");
else
System.out.print(in[i][j] + "\t");
}
System.out.print("\n");
}
}
public void打印网格(int[][]in){
对于(int i=0;i<20;i++){
对于(int j=0;j<20;j++){
if(in[i][j]==1)
系统输出打印('X'+“\t”);
其他的
System.out.print(in[i][j]+“\t”);
}
系统输出打印(“\n”);
}
}
您可以使用实用程序mettod。数组。deeptoString()
如果您知道矩阵的maxValue(如果元素的另一次迭代不是问题,那么可以很容易地完成),我发现下面的代码更有效、更通用
int numDigits = (int) Math.log10(maxValue) + 1;
if (numDigits <= 1) {
numDigits = 2;
}
StringBuffer buf = new StringBuffer();
for (int i = 0; i < matrix.length; i++) {
int[] row = matrix[i];
for (int j = 0; j < row.length; j++) {
int block = row[j];
buf.append(String.format("%" + numDigits + "d", block));
if (j >= row.length - 1) {
buf.append("\n");
}
}
}
return buf.toString();
intnumdigits=(int)Math.log10(maxValue)+1;
if(numDigits=row.length-1){
buf.追加(“\n”);
}
}
}
返回buf.toString();
试试这个怎么样
public static void main (String [] args)
{
int [] [] listTwo = new int [5][5];
// 2 Dimensional array
int x = 0;
int y = 0;
while (x < 5) {
listTwo[x][y] = (int)(Math.random()*10);
while (y <5){
listTwo [x] [y] = (int)(Math.random()*10);
System.out.print(listTwo[x][y]+" | ");
y++;
}
System.out.println("");
y=0;
x++;
}
}
publicstaticvoidmain(字符串[]args)
{
int[]listwo=新int[5][5];
//二维阵列
int x=0;
int y=0;
而(x<5){
列表二[x][y]=(int)(Math.random()*10);
而(ypublicstaticvoidprintTwodimensionalArray(int[]]a){
for(int i=0;i
仅对于int数组我也是一个初学者,我刚刚使用两个嵌套for循环成功地解决了这个问题
我看了这里的答案,它们对我来说有点先进,所以我想我应该分享我的答案,以帮助所有其他新手
另外,这是一个打鼹鼠的游戏,所以这个阵列被称为“鼹鼠栅格”
public static void printGrid() {
for (int i = 0; i < moleGrid.length; i++) {
for (int j = 0; j < moleGrid[0].length; j++) {
if (j == 0 || j % (moleGrid.length - 1) != 0) {
System.out.print(moleGrid[i][j]);
}
else {
System.out.println(moleGrid[i][j]);
}
}
}
}
publicstaticvoidprintgrid(){
对于(int i=0;i
希望有帮助!更简单的方法是,使用Java5样式进行循环
Integer[][] twoDimArray = {{8, 9},{8, 10}};
for (Integer[] array: twoDimArray){
System.out.print(array[0] + " ,");
System.out.println(array[1]);
}
如何用x替换1?顺便说一句,不是家庭作业…我是一名40岁的IT专业人士(网络),一直对编程感兴趣,因此学习一些新的东西。只需检查正在运行中的角色(循环内部),如果它是“1”@Jack,则替换它-类似于print(a[I][j]==1?'x:“”);
我可以在printGrid方法中替换吗?当然可以!在该方法中添加如果
这应该可以打印。您可以添加制表符(“\t”或任何字符,根据您的喜好)在每个print语句的末尾分隔每个元素。数组。deepToString
只打印一行2D数组,尽管它可能很有用,但这不是问题所在(网格)。我添加了一个非常小的改进:%d\t”
。
public static void printGrid() {
for (int i = 0; i < moleGrid.length; i++) {
for (int j = 0; j < moleGrid[0].length; j++) {
if (j == 0 || j % (moleGrid.length - 1) != 0) {
System.out.print(moleGrid[i][j]);
}
else {
System.out.println(moleGrid[i][j]);
}
}
}
}
Integer[][] twoDimArray = {{8, 9},{8, 10}};
for (Integer[] array: twoDimArray){
System.out.print(array[0] + " ,");
System.out.println(array[1]);
}