嵌套循环产生特定的输出

时间:2018-10-24 09:45:33

标签: java loops for-loop nested-loops

我刚刚开始学习Java,并试图产生以下输出:

$££$$$££££$$$$$

我目前的尝试如下:

for (i = 1; i < 3; i++) {
    System.out.print("$£");
    for (j = 1; j < i + 2; ++j) {
        System.out.print("$");

我曾经在Python上有过一定的经验,但是我一直在努力地探索使用Java的嵌套循环的语法。我收到以下输出:

$£$$$£$$$

5 个答案:

答案 0 :(得分:2)

在下面更新了您的代码。

char temp = '$';
for (int i = 1; i < 6; i++) {
    for (int j = 0; j < i; ++j) {
        System.out.print(temp);
    }
    if (temp == '$') {
        temp = '£';
    }
    else {
        temp = '$';
    }
}

尝试一下,我已经更新了您的代码。随时询问是否有不清楚的地方。

输出:

  

$£$$$$£££$$$$$

Try Here

答案 1 :(得分:1)

您应该将其视为“人类将如何做到”,然后尝试在代码中使用相同的方法。

那人类会做什么:

  • 写1x $
  • 写2x£
  • 写3x $
  • 写4x£

因此模式很清楚。你对人类说什么?嘿,请遵循这种方法,每次增加相同字符的打印数量,并每次都进行切换。

现在就可以在代码中完成

let howMuchTimes = 5;
const charA = '$';
const charB = '£';
let actualChar = charA;
let output = '';

for (let i=0; i < howMuchTimes; i++){    
  for (let j=0; j < i+1; j++) {
    output += actualChar;
  }
    
  if (actualChar === charA) {
    actualChar = charB;
  } else {
    actualChar = charA;
  }
}

console.log(output);

(它在javascript中,因此您可以在此处执行它,但是在Java中此代码没有太大区别)

答案 2 :(得分:1)

当您想轻松更改字符和/或出现次数时,可以执行以下操作:

    char odd = '$';
    char even = '£';
    int amount = 6;

    for (int i = 1; i <= amount; i++) {
        for (int j = 0; j < i; j++) {
            System.out.print(i % 2 == 0 ? even : odd);
        }
    }

输出:

$££$$$££££$$$$$££££££

答案 3 :(得分:1)

您可以将要打印的字符放在一个数组中,并在其上循环时,可以结合使用索引和余数运算符在字符之间进行切换。 然后,您只需要有一个嵌套循环,该循环将重复打印字符重复当前索引的次数。

final String[] characters = {"£", "$"};
for (int i = 1; i <= 5; i++)
    for (int j = 0; j < i; j++)
        System.out.print(characters[i % characters.length]);

在Java 11中,您甚至可以放弃嵌套循环,并用String#repeat(int)替换它来重复字符串:

final String[] characters = {"£", "$"};
for (int i = 1; i <= 5; i++)
    System.out.print(characters[i % characters.length].repeat(i));

答案 4 :(得分:1)

您可以使用一个循环,仅当您知道用Java重复字符串的方式很多时,因此,如果您使用的是Java 8,则可以使用:

Java 8

int i = 1;
for (i = 1; i < 4; i+=2) {
    System.out.print(String.join("", Collections.nCopies(i, "$")));
    System.out.print(String.join("", Collections.nCopies(i + 1, "£")));
}
System.out.print(String.join("", Collections.nCopies(i, "$")));

Java 11

如果您使用的是Java 11,则可以使用String::repeat

int i = 1;
for (i = 1; i < 4; i+=2) {
    System.out.print("$".repeat(i));
    System.out.print("£".repeat(i + 1));
}
System.out.print("$".repeat(i));

简单的Java代码

或者您可以使用循环创建自己的重复方法,您的代码可以是:

public static void main(String[] args) {
    int i = 1;
    for (i = 1; i < 4; i+=2) {
        System.out.print(repeatString("$", i));
        System.out.print(repeatString("£", i));
    }
    System.out.print(repeatString("$", i));
}

public static String repeatString(String s, int nbr) {
    StringBuilder result = new StringBuilder("");
    for (int i = 0; i < nbr; i++) {
        result.append(s);
    }
    return result.toString();
}

输入

$££$$$££££$$$$$