2015-05-04 57 views
-3

我想通过循环获取此输出。但用户需要在运行时定义值。因此,当用户输入6,其结果应该是这样的(注6行创建了递增字符之间的空格!):向带循环的字符串添加空格

## 
# # 
# # 
# # 
# # 
#  # 

我已经写了这么远的代码,我真的很困惑,如何添加空格..到目前为止的代码看起来是这样的:

import java.util.*; 

公共类模式 {

public static void main(String[] args) 
{ 

    int input; 
    Scanner kb = new Scanner(System.in);  

    System.out.print("Enter a positive number: "); 
    input = kb.nextInt(); 

    while (input <= 0) 
    { 
     System.out.print("That isn't positive, try again: "); 
     input= kb.nextInt(); 
    } 

    for (int number = 0; number < input; number++) 
    { 
     System.out.print("#"); 
+0

无论是从你的问题也不能从代码是清楚自己想要什么结果。 –

+0

嗨,我修改了这个问题。我对此感到抱歉 – BTurk7575

+0

注意:您的IDE可以帮助您自动格式化代码。它可以帮助你更好地理解你正在做的事情。 –

回答

2

你想要的东西是打印一些空间,是equiva借给当前行号 - 1.所以你必须为此创建一个for循环。

import java.util.*; 

public class Pattern 
{ 

    public static void main(String[] args) 
    { 

     int input; 
     Scanner kb = new Scanner(System.in);  

     System.out.print("Enter a positive number: "); 
     input = kb.nextInt(); 

     while (input <= 0) 
     { 
      System.out.print("That isn't positive, try again: "); 
      input= kb.nextInt(); 
     } 

     for (int number = 0; number < input; number++) 
     { 
      System.out.print("#"); 

      //print spaces equal to the number variable 
      for(int count = 0; count < number; count++) 
      { 
       System.out.print(" "); 
      } 

      System.out.println("#"); 
     }    

    } 

} 
0

我刚刚离开这个在这里,如果你想有一个JDK 1.8的解决方案太:)

int lineCount = // read from console 

String result = IntStream.range(0, lineCount) 
    .mapToObj(i -> 
     Stream.generate(() -> " ") 
       .limit(i) 
       .collect(Collectors.joining()) 
    ) 
    .map(s -> "#" + s + "#") 
    .collect(Collectors.joining("\n")); 

System.out.println(result);