【问题标题】:Iterate array and print different string outputs迭代数组并打印不同的字符串输出
【发布时间】:2019-04-23 14:47:42
【问题描述】:

作为新手,我试图更好地理解 for 循环和数组。我可以使用 for 循环打印一个字符串数组并在新行上为每个字符串获取不同的输出,例如“string1 到大写”、“string2 到小写”,正如我用单个 println 语句演示的那样。

import java.util.Arrays;

public class Examples {

    public static void main(String[] args) {

       String[] strings = new String[] {"LOWERCASE","uppercase","char at index","flow"};

         System.out.println(strings[0].toLowerCase()); //can i do this//
         System.out.println(strings[1].toUpperCase()); //with a       //
         System.out.println(strings[3].charAt(3));     //simple       //
         System.out.println(strings[0].length());      //for loop     //

         for (String name: strings){     

             System.out.println(name);
         }   
    }    
}

使用 for 循环获得与单个 println 语句相同的结果。

【问题讨论】:

  • 你用的不是简单的for循环,而是增强的for-each循环……
  • 您的意思是,如果您可以在 for 循环中执行您在直接访问数组位置的每一行中所做的操作?
  • 为什么要在 for 循环中进行?你来这里的动机是什么?
  • 没有动机,只是想自学,想知道是否可能。
  • 是的@lealceldeiro,正如你所描述的那样,正是我要问的。我没有实际的理由,但出于我自己的好奇心。

标签: java arrays


【解决方案1】:

您可以为 String 上的不同操作定义不同的条件,并在一个简单的 for 循环中检查它们(即一个数字每一步递增的循环)。
请参阅此示例,该示例使用模运算来区分 4 种不同的情况:

public static void main(String[] args) {
    String[] strings = new String[] {"LOWERCASE","uppercase","char at index","flow"};

    for (int i = 0; i < strings.length; i++) {     
        if (i % 3 == 3) {
            System.out.println(strings[i].toLowerCase());
        } else if (i % 3 == 2) {
            System.out.println(strings[i].toUpperCase());
        } else if (i % 3 == 1) {
            System.out.println(strings[i].charAt(3));
        } else if (i % 3 == 0) {
            System.out.println(strings[i].length());
        }
    }
}

运行它,然后找出导致输出的原因。

【讨论】:

    【解决方案2】:

    您可以做的是扩展您的 for-each 循环,以对列表中的每个条目执行每个字符串操作,如下所示:

    import java.util.Arrays;
    
    public class Examples {
    
        public static void main(String[] args) {
    
            String[] strings = new String[] {"LOWERCASE","uppercase","char at index","flow"};
    
    
            for (String name: strings){     
                System.out.println(name.toLowerCase());
                System.out.println(name.toUpperCase());
                System.out.println(name.charAt(3));
                System.out.println(name.length());
            }   
        }    
    }
    

    这就是你要找的吗?

    【讨论】:

    • 查看该代码并运行它让我意识到我的问题是荒谬的。谢谢
    【解决方案3】:

    目前还不清楚您要完成的逻辑是什么,您在 println 部分中迭代名称的顺序有点随机。
    您可以做的是定义Functions 的数组,然后为索引i 中的每个名称在同一索引中应用相关函数:

    Function<String,String>[] funcs = new Function[] {
      (Function<String,String>) (s) -> s.toUpperCase(),
      (Function<String,String>) (s) -> s.toLowerCase()
    };
    for (int i = 0; i < names.length; i++) {
      System.out.println(funcs[i].apply(names[i]));
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2014-12-26
      相关资源
      最近更新 更多