嵌套循环结构

时间:2013-12-04 11:46:05

标签: java nested-loops

这是我作业的一部分。我需要的只是一些建议。我需要编写一些嵌套的循环结构,以打印以下内容:

"122333444455555"

"+**+++****+++++"

"--***++++-----******+++++++"

这是我打印第一组符号的代码

public static void main (String[] args)
{
    int i,j;
    for(i=1;i<6;++i)
    {
        for(j=1;j<i+1;++j)
        {
            System.out.print(i);
        }
    }
}

这完全没问题。我只是弄清楚第二和第三组符号。为我缺乏经验而道歉,我对Java很新。

4 个答案:

答案 0 :(得分:4)

一个解决方案是:

final String[] arr = {"*", "+"};

在你的内部循环中:

System.out.print(arr[i % 2]);

%(Modulo)运算符负责*+符号之间的切换:

对于甚至 i,它将是*,否则它将是+


输出:"+**+++****+++++"

(关于第二个输出,我不会向你展示解决方案,但是一旦你理解了它,它就非常类似于这个。)

答案 1 :(得分:2)

public static void main(String[] args) throws IOException {

    int i, j;

    for (i = 1; i < 6; ++i) {
        for (j = 1; j < i + 1; ++j) {
            System.out.print(i);
        }
    }

    System.out.println();

    for (i = 1; i < 6; i++) {
        if (i % 2 == 1) {
            for (j = 1; j < i + 1; ++j){
            System.out.print("+");
            }
        } else {
            for (j = 1; j < i + 1; ++j){
                System.out.print("*");
            }
        }
    }

    System.out.println();

    for (i = 2; i < 8; i++) {
        if (i % 3 == 1) {
            for (j = 1; j <= i; ++j){
                System.out.print("+");
            }
        } else if (i % 3 == 2) {
            for (j = 1; j <= i; ++j){
                System.out.print("-");
            }
        } else {
            for (j = 1; j <= i; ++j){
                System.out.print("*");
            }
        }
    }
}

周期#1: 您必须打印1到5的数字,每个数字N必须打印N次。

for (i = 1; i < 6; ++i) { // this would set `i` to numbers from 1-5

for (j = 1; j < i + 1; ++j) { // for each cycle (next number) it prints 
//it out N times where N is the cycle number. 1 is the first cycle,
//2 is the second and so on.

周期#2: 同样的问题,但不是打印出循环次数,而是根据周期数是奇数还是偶数打印出+或*。

要检查数字是否均匀,您可以使用:

int number = 1;
if(number % 2 == 0){ // is true if the number is even

这会检查number除以2的余数。

周期#3: 与#2相同但你从第二个周期开始,而不是从第一个周期开始,你在除以3后检查余数。

答案 2 :(得分:0)

如果我理解,第三组由“ - * +”序列组成,所以:

String sequence = "-*+";
String s = "+**+++****+++++";
int seqI = 0;
for(i=0; i != s.size(); ++i) {
  for(j=0; j < i+2; ++j) {
    System.out.print(sequence[seqI]);
  }
  if(seqI < sequence.size()) {
    ++seqI;
  } else {
    seqI = 0;
  }  
}

答案 3 :(得分:0)

您可以定义如下函数:

public static char Output(int i, int mode)
{
     if (mode == 1)
     {
        return (char) i;
     }
     else if (mode == 2)
     {
         if (i % 2 == 0)
         {
             return '+';
         }
         else
         {
             return '*';
         }
     }
     else if (mode == 3)
     {
         if (i % 3 == 0)
         {
             return '-';
         }
         else if (i % 3 == 1)
         {
             return '*';
         }
         else
         {
             return '+';
         }
     }
}

使用它就像:

for (int mode = 1 ; mode < 4 ; mode++)
{
    for (int i = 1 ; i < 6 ; i++)
    {
        for (int j = 0 ; j < i + (int)(mode / 3) ; j++)
        {
            System.out.println(Output(i, mode));
        }
    }
}

注意:是的!实际上我的代码很难阅读,但如果你试着阅读它,你会学到的东西比其他答案更多!

相关问题