Java 我怎样才能把A1-A6、B1-B6等打印出来?

Java 我怎样才能把A1-A6、B1-B6等打印出来?,java,Java,我正在创建一台自动售货机,它必须打印出用户可以输入的选项列表,但我面临的问题是,我无法让它打印出用户需要输入什么才能获得该项目。程序从文本文件中获取要打印的项目。例如,我可以让它打印以下内容: 杏仁乐 萬樂珠 小船 但我需要它看起来像这样: A1:杏仁乐 A2:曼托斯 A3:小煤斗 依此类推到A6,然后继续到B1-B6,依此类推。如何以这种方式将其打印出来?您需要自己生成前缀: int NUM_COLUMNS = 6; char rowPrefix = 'A'; int colPrefix =

我正在创建一台自动售货机,它必须打印出用户可以输入的选项列表,但我面临的问题是,我无法让它打印出用户需要输入什么才能获得该项目。程序从文本文件中获取要打印的项目。例如,我可以让它打印以下内容:

杏仁乐 萬樂珠 小船

但我需要它看起来像这样:

A1:杏仁乐 A2:曼托斯 A3:小煤斗


依此类推到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:?