我有一个[20] [20]二维数组,我操纵过。简而言之,我正在做一个乌龟项目,用户输入指令,如笔向上= 0和笔向下= 1.当笔向下时,单个阵列位置,例如[3] [4]标记为“1”
我的程序的最后一步是打印出20/20数组。
我无法弄清楚如何打印它,我需要用“X”替换“1”
print命令实际上是父类程序将调用的类中的一个方法...我知道我必须使用循环...任何帮助都将不胜感激。
public void printGrid()
{
System.out.println...
}
答案 0 :(得分:36)
您可以使用Utility mettod。 Arrays.deeptoString();
public static void main(String[] args) {
int twoD[][] = new int[4][];
twoD[0] = new int[1];
twoD[1] = new int[2];
twoD[2] = new int[3];
twoD[3] = new int[4];
System.out.println(Arrays.deepToString(twoD));
}
答案 1 :(得分:25)
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();
}
}
并替换
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 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();
}
}
答案 2 :(得分:20)
我在另一个问题中回答这样的事情
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));
}
}
}
答案 3 :(得分:1)
您应该按行循环,然后使用类似
的结构进行循环for ...row index...
for ...column index...
print
但我想这是作业,所以请亲自尝试一下。
交换for循环中的行/列索引,具体取决于您是先需要先关闭然后再关闭,先关闭然后再关闭。
答案 4 :(得分:1)
好吧,因为'X'是一个char而不是一个int,你实际上不能在矩阵本身中替换它,但是,下面的代码应该打印一个'x'字符,只要它遇到a 1。
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");
}
}
答案 5 :(得分:1)
尝试这个怎么样?
var ldap = require('ldapjs');
var promise = require('bluebird');
var client = ldap.createClient({url: app.settings['ldap']['server']});
var uid;
promise.promisifyAll(client);
function searchPromise(res, notfoundtext) {
return new Promise(function(resolve, reject) {
var found = false;
res.on('searchEntry', function(entry) {
found = true;
resolve(entry);
});
res.on('error', function(e) {
reject(e.message);
});
res.on('end', function() {
if (!found) {
reject(notfoundtext);
}
});
});
}
client.searchAsync(app.settings['ldap']['baseDn'], {filter: '(mail='+credentials.email+')', scope: 'sub'})
.then(function(res) {
return searchPromise(res, 'User isn\'t exists.');
})
.then(function (entry) {
uid = entry.object.uid;
return client.bindAsync(entry.object.dn, credentials.password);
})
.then(function() {
return client.searchAsync('cn='+app.settings['ldap']['group']+',cn=groups,'+app.settings['ldap']['baseDn'], {scope: 'sub', filter: '(memberUid='+uid+')'});
})
.then(function(res) {
return searchPromise(res, 'User is not in group ' + app.settings['ldap']['group']);
})
.then(function() {
console.log('All is ok');
})
.catch(function(message) {
console.log('Error:' + message);
});
答案 6 :(得分:0)
如果您知道矩阵的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();
答案 7 :(得分:0)
public static void printTwoDimensionalArray(int[][] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.printf("%d ", a[i][j]);
}
System.out.println();
}
}
仅适用于int数组
答案 8 :(得分:0)
我还是一个初学者,我已经使用两个嵌套的for循环设法破解了这个问题。
我在这里查看了答案,对我来说它们有些先进,所以我认为我会和我分享一下,以帮助所有其他新手。
P.S。这是针对Whack-A-Mole游戏的,因此为什么将数组称为“ moleGrid”。
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]);
}
}
}
}
希望有帮助!
答案 9 :(得分:0)
更简单的方法,使用Java 5样式进行循环
Integer[][] twoDimArray = {{8, 9},{8, 10}};
for (Integer[] array: twoDimArray){
System.out.print(array[0] + " ,");
System.out.println(array[1]);
}