Java 我怎样才能把A1-A6、B1-B6等打印出来?
我正在创建一台自动售货机,它必须打印出用户可以输入的选项列表,但我面临的问题是,我无法让它打印出用户需要输入什么才能获得该项目。程序从文本文件中获取要打印的项目。例如,我可以让它打印以下内容: 杏仁乐 萬樂珠 小船 但我需要它看起来像这样: A1:杏仁乐 A2:曼托斯 A3:小煤斗Java 我怎样才能把A1-A6、B1-B6等打印出来?,java,Java,我正在创建一台自动售货机,它必须打印出用户可以输入的选项列表,但我面临的问题是,我无法让它打印出用户需要输入什么才能获得该项目。程序从文本文件中获取要打印的项目。例如,我可以让它打印以下内容: 杏仁乐 萬樂珠 小船 但我需要它看起来像这样: A1:杏仁乐 A2:曼托斯 A3:小煤斗 依此类推到A6,然后继续到B1-B6,依此类推。如何以这种方式将其打印出来?您需要自己生成前缀: int NUM_COLUMNS = 6; char rowPrefix = 'A'; int colPrefix =
依此类推到A6,然后继续到B1-B6,依此类推。如何以这种方式将其打印出来?您需要自己生成前缀:
int NUM_COLUMNS = 6;
char rowPrefix = 'A';
int colPrefix = 1;
Scanner s = new Scanner("/path/to/file.txt");
while (s.hasNextLine()) {
String product = s.nextLine();
System.out.println(String.valueOf(rowPrefix) + colPrefix + ": " + product);
colPrefix++;
if (colPrefix == NUM_COLUMNS) {
colPrefix = 1;
rowPrefix++;
}
}
您需要自己生成前缀:
int NUM_COLUMNS = 6;
char rowPrefix = 'A';
int colPrefix = 1;
Scanner s = new Scanner("/path/to/file.txt");
while (s.hasNextLine()) {
String product = s.nextLine();
System.out.println(String.valueOf(rowPrefix) + colPrefix + ": " + product);
colPrefix++;
if (colPrefix == NUM_COLUMNS) {
colPrefix = 1;
rowPrefix++;
}
}
你的问题并不完全清楚你的清单的结构。但无论如何,我将向您展示有关字符串[]的示例。假设您已将列表存储在数组中
String[] strArr = { "Almonds", "Mentos", "Skitties" };
// Create this to change the title from A, B, etc
char title = 'A';
int counter = 0;
// Print all items in a for loop
for(int i=0; i < strArr.length; i++) {
// Increment Counter by 1
++counter;
// Print the item, by adding 'A' increment the value of i
System.out.println(char + counter + ": " + strArr[i]);
// Check if it has reached 6 or not
if (i == 5) { // loop starts from 0, so 5 == 6 items
char = 'B';
// Change the counter to 0, so it again starts from 1
counter = 0;
}
}
希望这有帮助 您的问题并不完全清楚您的列表结构。但无论如何,我将向您展示有关字符串[]的示例。假设您已将列表存储在数组中
String[] strArr = { "Almonds", "Mentos", "Skitties" };
// Create this to change the title from A, B, etc
char title = 'A';
int counter = 0;
// Print all items in a for loop
for(int i=0; i < strArr.length; i++) {
// Increment Counter by 1
++counter;
// Print the item, by adding 'A' increment the value of i
System.out.println(char + counter + ": " + strArr[i]);
// Check if it has reached 6 or not
if (i == 5) { // loop starts from 0, so 5 == 6 items
char = 'B';
// Change the counter to 0, so it again starts from 1
counter = 0;
}
}
希望这有帮助 我会在这里创建一个迭代器类,它会连续地给我想要的东西 请注意,代码未经测试,可能无法工作,但您将看到其意图
class Numerator implements Iterator<String> {
int num = 0;
INT MAXNUM = 6;
boolean hasNext() {
return false;
return num < 26 * MAXNUM; // whatever you prefer
}
String next() {
int col = num / MAXNUM + 1;
int row = num % MAXNUM + 1;
StringBuilder res = new StringBuilder()
do {
res.append('A' + (col % 26) - 1)
col /= 26
} while (col > 0)
res = res.reverse();
res.append(row)
this.num++; // advance!
return res.toString();
}
}
它假设在“Z”之后得到“AA”、“AB”等等。我会在这里创建一个迭代器类,它会连续地给我想要的东西 请注意,代码未经测试,可能无法工作,但您将看到其意图
class Numerator implements Iterator<String> {
int num = 0;
INT MAXNUM = 6;
boolean hasNext() {
return false;
return num < 26 * MAXNUM; // whatever you prefer
}
String next() {
int col = num / MAXNUM + 1;
int row = num % MAXNUM + 1;
StringBuilder res = new StringBuilder()
do {
res.append('A' + (col % 26) - 1)
col /= 26
} while (col > 0)
res = res.reverse();
res.append(row)
this.num++; // advance!
return res.toString();
}
}
它假设在“Z”之后有“AA”、“AB”等等。可以显示列表的结构吗?列表中的每个值都有A1、A2等标识符键吗?@user1849060目前,文本文件将项目列为项目、价格、数量,我想我应该让文本文件看起来像这样。我最初的想法是使用for循环,但我不知道如何处理字母。在char上创建for循环没有问题-它非常类似于整数,但你给它的是像“a”、“Z”这样的文字,而不是数字。最好的办法是试着写一个这样的小循环,然后进行处理。你能展示一下列表的结构吗?列表中的每个值都有A1、A2等标识符键吗?@user1849060目前,文本文件将项目列为项目、价格、数量,我想我应该让文本文件看起来像这样。我最初的想法是使用for循环,但我不知道如何处理字母。在char上创建for循环没有问题-它非常类似于整数,但你给它的是像“a”、“Z”这样的文字,而不是数字。最好的办法是试着写一个这样的小循环,然后玩转它。所以我也必须为B、C等等创建一个字符?@RyanDorman-不,行前缀会处理它。注意if语句-如果colPrefix被重置,rowPrefix将递增,因此它将从“A”移动到“B”再移动到“C”,等等。注意:这里有一个轻微的假设,我们不会通过“Z”。我实现了与您所述类似的代码,但出于某种原因,它打印的是一个数字而不是字母。知道为什么会这样吗?@RyanDorman我一直忘了+,很抱歉。编辑到我的答案中的String.valueOf应该会处理它。或者,您可以直接使用StringBuilder。因此,我还必须为B、C等创建一个字符?@RyanDorman-不,行前缀会处理它。注意if语句-如果colPrefix被重置,rowPrefix将递增,因此它将从“A”移动到“B”再移动到“C”,等等。注意:这里有一个轻微的假设,我们不会通过“Z”。我实现了与您所述类似的代码,但出于某种原因,它打印的是一个数字而不是字母。知道为什么会这样吗?@RyanDorman我一直忘了+,很抱歉。编辑到我的答案中的String.valueOf应该会处理它。或者,您可以直接使用StringBuilder。是否有方法可以这样做,以便它在命中A6:后打印出B1:?是否有方法可以这样做,以便它在命中A6:后打印出B1:?