簡體   English   中英

如何重復每個字符重復次數遞減的字符串?

[英]How do I repeat a string where each character is repeated a decreasing number of times?

是的,我又回到了另一個 Java 問題。 所以在這里我應該重復一個字符串,它的字符重復次數減少。 第一個字符應該重復字符串的長度次數。

這是輸出應該是什么樣子的示例:

HHHHH
oooo
www
dd
y

根據我下面寫的代碼,我接下來應該做什么?

String go( String a) 
{
  String y = "";
  for (int i = 0; i < a.length(); i++)
  {
    for (int j = 0; j < a.length(); j++)
    {
      y = y + a.charAt(i);
    }
    if (i == a.length() - 1)
    {
      y = y + "";
    }
    else
    {
      y = y + "\n";
    }
  }
  return y;
}

隨意指出我犯過的任何明顯錯誤。 我是 Java 新手,剛剛了解到 Java 和 Javascript 不是一回事!

我們可以維護兩個計數器 - 一個用於從字符串中提取字符 (characterLoc),另一個用於指定字符重復的次數 (repCount)。

外循環用於提取字符,內循環用於將提取的字符重復指定次數。

public static void main(String[] args) {
    String str = "Howdy";
    int characterLoc = 0;
    int repCount = str.length();

    while (characterLoc < str.length()) {
        for (int x = repCount; x > 0; x--) {
            System.out.print(str.charAt(characterLoc));
        }
        characterLoc++;
        repCount--;
        System.out.println();
    }
}

當我運行你在你的問題中發布的代碼時,我得到了這個結果:

HHHHH
ooooo
wwwww
ddddd
yyyyy

這不是你想要的。
為了得到你想要的東西,你只需要在你的代碼中做一個改變。 您需要更改內部for循環。 這是帶有所需添加的代碼。

private static String go(String a) {
    String y = "";
    for (int i = 0; i < a.length(); i++) {
        for (int j = 0; j < a.length() - i; j++) { // change here
            y = y + a.charAt(i);
        }
        if (i == a.length() - 1) {
            y = y + "";
        }
        else {
            y = y + "\n";
        }
    }
    return y;        
}

當您運行該代碼時,它會產生以下輸出。

HHHHH
oooo
www
dd
y

你想要的,不是嗎?

暫無
暫無

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

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