ardano
April 11, 2020, 7:24pm
1
Hi everyone!
I am an absolute beginner in Processing.
I’m trying to figuring how to write a 12x12 two-dimensional array of integers to a .txt file but I don’t have any idea…
Can someone please suggest me how?
The full code is actually quite long and I don’t think it’s really important (just long, boring maths), but here’s the latest few lines where I finally print everything to the console:
for (int i = 0; i < 12; i ++) {
for (int j = 0; j < 12; j ++) {
print (matrixpos[j][i] + 1 + " ");
if (j==11) {
println();
}
}
}
…I guess the saving part should be added here, but again, I’m a beginner so I’m not sure…
Thank you all for help, any idea will be really appreciated.
See ya!
A.
1 Like
glv
April 11, 2020, 8:26pm
2
Hello,
Consider:
https://processing.org/tutorials/data/
Table objects store data with multiple rows and columns, much like in a traditional spreadsheet. Tables can be generated from scratch, dynamically, or using data from an existing file. Tables c…
Resources
I encourage you to review the resources available here:
:)
1 Like
This is what I’ve come up w/:
/**
* Save & Load TSV as int[][] (v1.0.1)
* GoToLoop (2020/Apr/11)
*
* https://Discourse.Processing.org/t/
* write-a-two-dimensional-array-matrix-to-text-files/19674/3
*/
static final TableType TABLE_TYPE = TableType.TSV;
static final String FILENAME = "Matrix" + '.' + TABLE_TYPE.EXT;
static final int[] COL_TYPES = { Table.INT, Table.INT, Table.INT };
static final int ROWS = 12, COLS = 12;
int[][] matrixPos = new int[ROWS][COLS];
void setup() {
// Save matrixPos[][] to disk:
final String fullPath = dataPath(FILENAME);
final String[] arr1d = intArr2dToStrArr1d(matrixPos, TABLE_TYPE.SEP);
saveStrings(fullPath, arr1d);
// Load matrixPos[][] from disk:
final Table t = loadTable(FILENAME, TABLE_TYPE.EXT);
t.setColumnTypes(COL_TYPES);
matrixPos = tableToIntArr2d(t);
// Display matrixPos[][]'s content:
for (final int[] arr : matrixPos) println(str(arr));
exit();
}
static final String[] intArr2dToStrArr1d(final int[][] arr2d, final char sep) {
if (arr2d == null || arr2d.length == 0) return new String[0];
final int len = arr2d.length;
final String[] arr1d = new String[len];
for (int i = 0; i < len; arr1d[i] = join(str(arr2d[i++]), sep));
return arr1d;
}
static final int[][] tableToIntArr2d(final Table t) {
if (t == null || t.getRowCount() == 0) return new int[0][0];
final int rows = t.getRowCount(), arr2d[][] = new int[rows][];
for (int i = 0; i < rows; arr2d[i] = t.getIntRow(i++));
return arr2d;
}
static enum TableType {
CSV("csv", ','), TSV("tsv", '\t');
final String EXT;
final char SEP;
TableType(final String ext, final char sep) {
EXT = ext;
SEP = sep;
}
}
I’ve relied on many Processing functions, such as:
1 Like
ardano
April 12, 2020, 2:30pm
4
Done!
I was not familiar with the table object.
Thank you all for your help and for every suggestion.
2 Likes