【问题标题】:running code when enter is pressed within a for loop在 for 循环中按下 enter 时运行代码
【发布时间】:2014-03-23 17:27:48
【问题描述】:

我想不出一种方法来运行以下代码 s.t.每次按下回车按钮时,它都会打印出数组中的一项。在不知道写什么的地方我写了伪代码。

while(true)
{
    if(enter button pressed)
    {
         print_item();
    }
}

private void print_item()
{
    for(String item: array)
    {
         System.out.println(item);
    }
 }

现在,如果代码运行,它会在按下回车键时打印所有项目。我将如何获得逐项打印的代码

【问题讨论】:

标签: java


【解决方案1】:

让我们一次解决一个问题。首先,为什么一次打印所有项目。

如果您仔细查看您的代码,就会清楚为什么会同时打印所有项目。

if(enter button pressed)
{
     print_item();
}

那里没有错误。让我们看一下方法本身:

private void print_item()
{
    for(String item: array) //Wait, for every string in the array!
    {
         System.out.println(item);
    }
}

for(String item: array)为数组中的每个元素运行打印行

相反,让您的print_item 方法接受一个整数。像这样的:

private void print_item(int index) {
    System.out.println(array[index]); //actually, just call this line instead of the method
}

改变你的循环:

for (int index = 0; index < array.length; index++) {
    wait_for_enter_to_be_pressed;
    print_item(index); //Should be System.out.println(array[index]);
}

对于等待,这取决于您使用的是什么类型的应用程序。对于控制台应用程序,这是一种选择:

Scanner waitForEnter = new Scanner(System.in);

for (int index = 0; index < array.length; index++) {
    waitForEnter.nextLine();
    System.out.println(array[index]);
}

waitForEnter.nextLine();Scanner 接受输入的方式,所以这将等到输入给出,由 enter 表示。

【讨论】:

    【解决方案2】:

    它打印所有元素的原因是因为当调用方法print_item()时,它内部的逻辑是打印所有元素是item。解决此问题的一种方法是使用标志并将参数传递给您的方法,如下所示:

    int a = 0;
    while(true)
    {
        if(enter button pressed)
        {
            print_item(a);
            a = a + 1;
        }
    }
    
    private void print_item()
    {
        System.out.println(item[a]);
    }
    

    【讨论】:

      【解决方案3】:
      int index = 0;
      while(true)
      {
          if(enter button pressed)
          {
               print_item(array[index++]);
          }
      }
      
      private void print_item(String item)
      {
          System.out.println(item);
      }
      

      您需要添加边界检查以避免错误。

      【讨论】:

        【解决方案4】:
        private void print_items()
        {
          for(String item: array)
          {
             System.out.println(item);
          }
        
          waitForEnterButton(); // <===
        }
        

        或者可能

        private void print_items() {
          while (moreItems() && waitForEnterButton()) {
            System.out.println(nextItem());
        }
        

        【讨论】:

          猜你喜欢
          • 2021-12-25
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          • 1970-01-01
          • 1970-01-01
          • 2021-08-05
          相关资源
          最近更新 更多