Java-在while循环中存储值

时间:2016-11-08 12:09:39

标签: java drjava

我是Java的初学者,我在循环上有一个作业。我知道这个问题对你来说听起来很基本,但我找不到一个可以理解的答案。我的代码基本上看起来像;

import java.util.Scanner;

public class Histogram
{
  public static void main( String[] args)
  {
    Scanner scan = new Scanner( System.in);

    // Constant

    final String CH = "*";

    // Variables
    int number;
    int count;
    int start;
    int width;
    int line;
    String output;


    // Program Code

    count = 0;
    number = 0;
    start = 1;
    width = 0;
    line = 0;
    output = "";


    // Creating the loop

    while ( start == 1) 
    {
      System.out.println( "Enter the numbers");
      number = scan.nextInt();

      if ( number < 0 )
      {
        start = 0;
      }

      else
      {  
        while ( width < number)
        {
         output = CH + " " ;
         width = width + 1  ;  
         System.out.print(output);
        }
        width = 0;


      }
    }

  }
}

这完美运行但每个用户输入后都会打印星号输出。我想存储每个循环的输出,并在输入负整数时将它们一起打印在一起。如何存储我不知道用户输入了多少输出的输出? 总之,我希望得到以下输出

输入数字:3 5 6 4 -1 //数字是用户输入

3 *** 5 ***** 6 ****** 4 ****

4 个答案:

答案 0 :(得分:0)

您只需要在while范围之外创建一个变量(类似StringStringBuilder (首选)),而不是直接打印您的结果,而是' d将任何输出附加到此变量并在末尾打印。

使用这种方法,您基本上可以收集整个输出并立即打印出来。

...

//create a output variable outside while loop. You can also use simple String
StringBuilder out = new StringBuilder();

while ( start == 1) 
{
  System.out.println( "Enter the numbers");
  number = scan.nextInt();

  if ( number < 0 )
  {
    start = 0;
  }

  else
  {  
    while ( width < number)
    {
     output = CH + " " ;
     width = width + 1  ;  

     //instead of directly printing, you can append your output to out variable.
     out.append(output);

    }
    width = 0;


  }
}

//after coming out of the loop, you can now print it
System.out.print(out);

...

答案 1 :(得分:0)

在&#34; else&#34;你可以存储输入的数字:

List<Integer> myList = new ArrayList<>(); //previously defined
(...)
else {
      myList.add(number);
}

然后在while循环之外,一旦填充了你的arraylist:

for(int i=0;i<myList.size();i++)
{
     for(int j=0;j<myList.get(i);j++)
     {
         System.out.print("*");
     }
     System.out.print("\n");
}

答案 2 :(得分:0)

这就是答案:

import java.util.Scanner;

public class Histogram
{
  public static void main( String[] args)
  {
    Scanner scan = new Scanner( System.in);

    // Constant

    final String CH = "*";



   int count = 0;
    int number = 0;
    int start = 1;
    int width = 0;
    int line = 0;
    String output = "";
    String store="";


    // Creating the loop

    while ( start == 1) 
    {
      System.out.println( "Enter the numbers");
      number = scan.nextInt();

      if ( number < 0 )
      {
        start = 0;
      }

      else
      {  
        while ( width < number)
        {
         output = CH + " " ;
         width = width + 1  ;  
        store+=output;
        }
        width = 0;


      }
    }
    System.out.print(store);

  }
}

答案 3 :(得分:-1)

使用List,例如ArrayList,而不是Array,因为大小可以动态增长。

例如,

List<Integer> ints = new ArrayList<>();
ints.add(5);
ints.add(2);
ints.add(7);

for(Integer i : ints){
  System.out.println(i);
}

如果您不想复制,可以改用Set。