嵌套循环/ ASCII?

时间:2014-12-01 04:54:07

标签: java loops

因此,对于我的计算机科学课程中的作业,我们必须根据喜好使用或同时使用循环。现在,赋值是使用所述循环和给定的输入来绘制由' $'组成的美丽的ASCII钻石。和' - '。比如,5的输入看起来像:

____$
___$-$
__$-$-$
_$-$-$-$
$-$-$-$-$
_$-$-$-$
__$-$-$
___$-$
____$

下划线表示空格。现在,我随时尝试使用

public static void main(String[] args) { 
String input=JOptionPane.showInputDialog(null, "Input a number between three and ten here: ");
double length=Double.parseDouble(input);
int i=0; int j=0;
for(i=1; i<length; i++)
    {
  System.out.print(" ");
  for(j=1; j<=i; j++)
    {
    if(j<i){System.out.print("-$");
    }
   else if(j==i){System.out.println("");}
    }
                                       }

我出来的东西就像输入= 7:

-$
-$-$
-$-$-$
-$-$-$-$
-$-$-$-$-$

是的,对于任何输入,中心的两个太少都是正确的。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

由于这是你的作业,我只是指出你正确的答案,让你弄清楚剩下的。让我们尝试格式化您的代码,以便您可以看到正在发生的事情:

public static void main(String[] args) { 
String input=JOptionPane.showInputDialog(null, "Input a number between three and ten here: ");
double length=Double.parseDouble(input);
int i=0; int j=0;
for(i=1; i<length; i++){
    System.out.print(" ");
    for(j=1; j<=i; j++){
      if(j<i){
        System.out.print("-$");
      }
      else if(j==i){System.out.println("");
    }
  }
}

现在,你有一个i的外循环,范围从1..length-1,并且对于每个你要打印一个空格,然后你将从1到1计数并打印“ - $“那么多次。然后,你打算打印换行符并重复外循环,递增i

所以,第一次通过外循环,你打印一个空格,然后是一个“ - $”,然后是换行符。然后第二次通过外循环,打印一个空格,然后打印“ - $”两次,然后换行。等等,直到我=长度,然后你停下来。

您希望在打印美元符号之前再打印几个空格 - 这里的循环可能很有用。

答案 1 :(得分:-1)

尝试查看此代码,看看它是如何工作的......它可能对您的作业很有用

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("input a number");
    int number = input.nextInt();
    input.close();

    boolean add = true;
    int counter = 0;
    do {
        if (add) {
            counter++;
            print(' ', number - counter);
            print('$', counter);
            if (counter == number)
                add = false;
            System.out.println();
        } else {
            counter--;
            if (counter == 0)
                break;
            print(' ', number - counter);
            print('$', counter);
            System.out.println();
        }

    } while (true);
}

private static void print(char c, int times) {
    if (c == '$')
        times = (times * 2) - 1;
    for (int i = 0; i < times; i++)
        System.out.print(c);
}

如果您编辑打印方法,您将获得所需的结果

private static void print(char c, int times) {
    if (c == '$')
        times = (times * 2) - 1;
    for (int i = 0; i < times; i++)
        if (i % 2 == 1 && c == '$')
            System.out.print('-');
        else
            System.out.print(c);
}