【问题标题】:Enter multiple strings on one line with a sentinel value into an array (java)将具有标记值的一行上的多个字符串输入到数组中(java)
【发布时间】:2020-10-16 19:20:23
【问题描述】:

我正在尝试将多个字符串输入到一个数组中,但它们都必须在同一行并且在输入标记值时停止。这是我目前所拥有的。

        String [] courses = new String [5];
        for (int k = 0; !(input.next().equals("xxx")); k++) {
            courses[k] = input.next();
        }   

似乎 for 循环没有循环,当我检查数组之后它只会有“xxx”之前的最后一个字符串,并且没有之前输入的字符串。所有输入必须在一行上。

【问题讨论】:

    标签: java loops input


    【解决方案1】:

    我假设您正在使用 java.util.Scanner 类来获取控制台输入,并且您有一个固定数组。

    上面的代码有两个主要问题: 当使用 next() 方法时,它将读取一行,而这一行将消失。 如果你有 10 个令牌而不是 5 个会发生什么?

    String[] courses = new String[5];
    for(int i = 0; input.hasNext(); i++) {
        String token = input.next();
        if ("xxx".equals(token)) {
            break;
        }
        courses[i] = token;
    }
    

    【讨论】:

    • 很遗憾,我不能在这个项目中使用列表。假设输入永远不会超过五个。
    【解决方案2】:

    在你的情况下使用 while 循环更好

    String [] courses = new String[5];
    
    int k = 0;
    
    while(!(input.next().equals("xxx")) && k < 5) {
      courses[k] = input.next();
      k++;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      相关资源
      最近更新 更多