2013-04-11 13 views
5

Hey Tôi có một câu hỏi tôi đã cố gắng tìm ra cho một vài giờ bây giờ, tôi cần phải sử dụng các vòng lặp lồng nhau để in sauNest Loops, không thể tìm ra cách để mã này

-----1----- 
    ----333---- 
    ---55555--- 
    --7777777-- 
    -999999999- 

Đây là những gì tôi có cho đến nay.

public static void Problem6() { 
     System.out.println("Problem 6:"); 
     for (int i = 1; i <= 5; i++) { 
      for (int j = 5; j >= i; j--) { 
       System.out.print("-"); 
      } 
      for (int j = 1; j <= 9; j += 2) { 
       System.out.print(j); 
      } 
      for (int j = 5; j >= i; j--) { 
       System.out.print("-"); 
      } 
      System.out.println(); 
     } 
    } 

Đây là những gì nó in

-----13579----- 
    ----13579---- 
    ---13579--- 
    --13579-- 
    -13579- 
+0

Bạn cần thay đổi vòng lặp trung tâm theo hai cách: Làm cho số lần lặp lại và giá trị được in cho cả hai đều phụ thuộc vào giá trị 'i'. –

+0

bạn thực sự thân thiết. vấn đề là trong thử nghiệm trong vòng lặp lồng nhau thứ hai. bạn sẽ tốt hơn khi tự tìm ra nó hơn là nhận được câu trả lời bằng thìa. –

+0

Rất thích tự mình tìm ra nó, ngoại trừ việc nó đến sớm và tôi đã dành nhiều thời gian cho nó, tôi cảm thấy rõ ràng đến nỗi tôi không thể nhìn thấy nó. – Brent

Trả lời

8

Bạn có con số chính xác của dấu gạch ngang, bạn chỉ không được in ra các số một cách chính xác. Hãy xem xét lý do tại sao đó là:

Vòng lặp nào in ra các số? Vòng lặp thứ hai cho vòng lặp.

Nó sẽ làm gì? Nó in ra j trong đó j phạm vi từ 1 đến 9j được tăng thêm 2 mỗi lần lặp của vòng lặp. Nói cách khác, 1, 3, 5, 7, 9, được xác nhận trong đầu ra của bạn

Bạn muốn làm điều gì? Chúng ta hãy nhìn vào đầu ra mong muốn. Bạn muốn 1 được in sau khi trên trước tiên dòng đầu tiên. Bạn muốn 3 được in ba lần trên thứ ba dòng tiếp theo. Bạn muốn 5 được in năm lần trên thứ năm dòng tiếp theo sau đó. Và cứ thế.

Bạn có nhận thấy mẫu không? Bạn muốn điều đó lặp chúng tôi đề cập ở trên để in các số cùng (1, 3, 5 ... i) như số lần (1, 3, 5 ... i).

chỉnh sửa Whooops Tôi thực sự hiểu sai kết quả đầu ra. Câu trả lời của tôi vẫn rất giống với trước đây, nhưng tôi đã nói dối về dòng bạn đang in cái gì. Nó vẫn là 3ba lần, 5năm lần nhưng các dòng khác nhau. Cách dễ nhất để chuyển từ giải pháp của tôi sang giải pháp thực tế là chú ý rằng trên các dòng chẵn ... bạn không làm gì cả. Bạn có thể cho là thậm chí viết giải pháp của bạn theo cách này.

Một mẹo khác là bạn chỉ nên tập trung vào việc nhận các con số trên mỗi dòng bên phải và dấu gạch ngang riêng biệt. Có khả năng bạn sẽ tăng số lượng dấu gạch ngang khi bạn sửa các số trên mỗi dòng, nhưng sau đó bạn sẽ nhận ra cách sửa các dấu gạch ngang một cách dễ dàng.

+0

Có bạn đã đúng. Tôi đã thêm bản chỉnh sửa. – rliu

+0

CÓ TÔI ĐÃ ĐÓ, tìm hiểu, chỉ cần thay đổi vòng lặp chính của tôi thành 10 và tính bằng 2 bắt đầu từ 1, vì vậy nó đã đi 1, 3, 5 7, 9 – Brent

+0

Vâng đó là những gì tôi đã làm. Tôi đang cố gắng tìm ra cách để chỉnh sửa câu trả lời của tôi để nó là kỹ thuật chính xác ngoài việc giúp đỡ về mặt khái niệm. – rliu

-1
public class pattern 
{ 
    public static void main ( ) 
    { 
     for (int i = 1;i<=9;i+=2) 
     { 
      for(int b = 9;b>=i;b-=2) 
      { 
       System.out.print(" "); 
      } 
      for(int j =1;j<=i;j++) 
      { 
       System.out.print(i); 
      } 
      System.out.println(); 
     } 
    } 
}