請問JAVA高手菱形程式?

我是想讓程式執行的時候上下菱形不同

像是這樣

* 1

** 3

*** 6

**** 10

***** 15

*** 18

* 19

我的原始程式是這樣的

請問該如何修改?

import java.io.*;

class ANDY

{

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

{

BufferedReader br=

new BufferedReader(new InputStreamReader(System.in));

System.out.println("張世明的單數菱形圖");

System.out.println("請輸入菱形的半徑");

String str = br.readLine();

int a = Integer.parseInt(str);

if (a%2==0)

{

System.out.println("輸入錯誤~請輸入單數!!");

return ;

}

int p = a/2;

int tt = 0;

for(int i= -p; i<=p; i++)

{

for (int j=-p; j<=p; j++)

if (Math.abs(j) <= p - Math.abs(i)){

System.out.print("*");

tt += 1;

}

else

System.out.print(" ");

System.out.print(" ");

System.out.println(tt);

}

}

}

拜託各位高手大大了!!

Update:

上面的圖形是菱形歐~因為知識家好像空格會跳掉...= ="

請各位高手理解

Update 2:

TO~THC仆街王

可以請大大幫忙設計一下嗎?

因為我不太會分兩個來做....

希望簡單一點~

Update 3:

int tt = 0;

//以下為上半個三角形

int tt = 0;~這段上面需要加的程式是什麼?

因為我想留輸入值必須為奇數還有旁邊有計算*數的模式....

拜託大大了

Update 4:

照大大說的修改了這樣~不過執行就是一直出現

"01.java:37:'}'expected"的錯誤訊息....

前面除了int p = a/2; 刪除外其他的我都保留~後面都照大大的程式運行...還是錯誤(limit 也換成 a了)

就是一直出現上面的錯誤訊息...

Update 5:

我比較想知道大大設計的完整程式....

int tt = 0;

這個上面的程式都錯誤應該沒辦法執行...

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    為什麼不分成上下兩個三角形來做?

    2009-05-20 19:05:32 補充:

    int tt = 0;

    //以下為上半個三角形

    for (int i = 1; i <= limit; i++) {

    for (int j = 0; j < (limit - i); j++)

    System.out.print(" ");

    for (int j = 0; j < 2*i-1; j++){

    System.out.print("*");

    tt = tt + 1;

    }

    System.out.println(" " + tt);

    }

    //以下為下半個三角形

    for (int i = 0; i < limit / 2 ; i++) {

    for (int j = 0; j <= 2*i+1; j++)

    System.out.print(" ");

    for (int j = 2; j < 2*(limit-1-2*i)-1; j++){

    System.out.print("*");

    tt = tt + 1;

    }

    System.out.println(" " + tt);

    }

    PS: limit 是輸入值須為奇數

    圖例:

          *

         ***

        *****

       *******

      *********

     ***********

    ************* //到這裡為上半三角

      *********

        *****

          *

    2009-05-21 09:30:45 補充:

    tt 就是用來計算*的個數(因為你原本就是)

    int tt=0; 之前只要確定你輸入值是奇數就可以了

    你原本的做法是

    a 為輸入值

    p 為 a 的一半,以 p 為迴圈計次

    ---------------------------------------------

    int p = a/2; 刪除

    limit 換成 a

    2009-05-23 08:33:46 補充:

    import java.io.*;

    class ANDY

    {

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

    {

    BufferedReader br=

    new BufferedReader(new InputStreamReader(System.in));

    System.out.println("張世明的單數菱形圖");

    System.out.println("請輸入菱形的半徑");

    String str = br.readLine();

    int limit = Integer.parseInt(str);

    2009-05-23 08:40:07 補充:

    int tt = 0;

    //以下為上半個三角形

    for (int i = 1; i <= limit; i++) {

    for (int j = 0; j < (limit - i); j++)

      。

      。

      。

    for (int j = 2; j < 2*(limit-1-2*i)-1; j++){

    System.out.print("*");

    tt = tt + 1;

    }

    System.out.println(" " + tt);

    }

    //就是第一次貼的部份

    2009-05-23 08:48:52 補充:

    }  //這個對應 (String[] args) throws IOException 後面那個 {

    }  //這個對應 class ANDY 後面那個 {

    //======== The End=========

    01.java:37:'}'expected

    此錯誤訊息是告訴你 第 37 行 應該要有 }

    所以上一個補充故意跟第一次貼的一樣,留2個 } 在這個補充

    你可能只打了一個,漏了一個,才會有那個錯誤訊息

    2009-05-23 08:51:43 補充:

    if (a%2==0)

    {

    System.out.println("輸入錯誤~請輸入單數!!");

    return ;

    }

    這個有要塞進去的話

    if (limit%2==0)

    {

    System.out.println("輸入錯誤~請輸入單數!!");

    return ;

    }

    放入原來的地方就可以了

Still have questions? Get your answers by asking now.