簡體   English   中英

嵌套的for循環在兩個字符串之間進行迭代

[英]Nested for loops to iterate between two strings

我想使用for循環,遍歷每個字符串並依次輸出每個字符。

String a = "apple";
String b = "class";

for (int i = 0;  i < a.length() ; i++) { // - 1 because 0 = 1
    System.out.print(a.charAt(i));
    for (int j = 0; j < b.length(); j ++) {
        System.out.print(b.charAt(j));
    }
}

我正在努力與內循環。

目前,我的輸出如下:

AClasspClasspClasslClasseClass

但是,我想實現以下目標:

acplpalses

擴展問題:

如何反向輸出一個字符串,而正常輸出另一個字符串呢?

當前嘗試:

for (int i = a.length() - 1; i >= 0; i--) {
    System.out.println(a.charAt(i));
    for (int j = 0; j < b.length(); j ++) {
        System.out.println(b.charAt(j));
    }
}

但是,這只是簡單地以上述方式輸出,只是以與前面相同的格式以相反的順序輸出“ Apple”:

eclasslclasspclasspclassaclass

您不需要兩個循環,因為兩個Strings索引相同


相同順序:

  1. 簡單的相同大小的情況

     for (int i = 0; i < a.length(); i++) { System.out.print(a.charAt(i)); System.out.print(b.charAt(i)); } 
  2. 復雜的大小不同的案例

     int minLength = Math.min(a.length(), b.length()); for (int i = 0; i < minLength; i++) { System.out.print(a.charAt(i)); System.out.print(b.charAt(i)); } System.out.print(a.substring(minLength)); // prints the remaining if 'a' is longer System.out.print(b.substring(minLength)); // prints the remaining if 'b' is longer 

不同的順序:

  1. 簡單的相同大小的情況

     for (int i = 0; i < a.length(); i++) { System.out.print(a.charAt(i)); System.out.print(b.charAt(b.length() - i - 1)); } 
  2. 復雜的大小不同的案例

     int minLength = Math.min(a.length(), b.length()); for (int i = 0; i < minLength; i++) { System.out.print(a.charAt(i)); System.out.print(b.charAt(b.length() - i - 1)); } System.out.print(a.substring(minLength)); System.out.print(new StringBuilder(b).reverse().substring(minLength)); 

使用Java 8流的另一種解決方案:

System.out.println(
    IntStream.range(0, Math.min(a.length(), b.length()))
        .mapToObj(i -> "" + a.charAt(i) + b.charAt(i))
        .collect(Collectors.joining(""))
);

對於擴展問題-假設兩個字符串的大小相同

for (int i = 0; i < a.length(); i++) {
    System.out.print(a.charAt(a.length()-1-i));
    System.out.print(b.charAt(i));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM