提示用户输入并使用输入来提示相同数量的输入

时间:2017-03-08 15:29:11

标签: java

我通过书中的问题/程序练习我的第一次Java考试。对我来说,有一个问题似乎过于庞大:

  

创建一个代码,提示用户输入一个号码。然后系统将提示新号码与第一个号码一样多次。输入可以有正数和负数,例如:

     
    

3
    -20
    4
    5

  
public static void main (String args[])
{
    int number;

    Scanner sc = new Scanner(System.in);
    int counter = Integer.parseInt(sc.nextLine());  
    System.out.println("enter a number");
    number = sc.nextInt();

    for (counter = 1; counter <= number; counter++)   //doesn't work with negatives
    {
        System.out.println("Enter a number");    //how to repeat times first input
        number = sc.nextInt();
    }
}

3 个答案:

答案 0 :(得分:0)

您的方法基本上是正确的,但您仍有一些问题在继续。我试着让你了解它:

public static void main (String args[])
{
  int number;
  Scanner sc = new Scanner(System.in);
  int counter = Integer.parseInt(sc.nextLine()); // You get a number
  System.out.println("enter a number"); // You ask to enter a number
  number = sc.nextInt(); // You get another number

  for(counter =1; counter <= number; counter++) { // Well...
    System.out.println("Enter a number");
    number = sc.nextInt();
  }
}

我注意到的第一件事是你从一开始就从用户那里得到两个号码。你使用不同的方法(两者都应该工作),只有在你已经收集了第一个之后才要求一个数字。这应该减少到只能得到一个数字,如:

Scanner sc = new Scanner(System.in);
System.out.println("How many numbers do you want to enter?");
int num = sc.nextInt();

让我们一步一步来。此时您需要知道需要多少个数字。但是,如果用户输入负数怎么办?我们来看看吧!

if (num < 0) {
    System.out.println("You entered a negative number. Aborting.");
    return;
}

当用户提供无效输入时,程序将在此时结束。

但是,让我们假设用户给出了正数。接下来是什么?那么,您现在可以使用给定的数字作为循环中的条件。这意味着我们需要一个额外的变量,我们的循环计数器,来比较它。通常这个名称为i,我们从0开始,而不是1

for (int i = 0; i < num; ++i) { /* ... */ }

太好了,看起来不错。但是我们在循环中做了什么?好吧,你基本上做得对,只是你可能想要添加一些输出,以便用户(你)得到一些反馈。怎么样:

System.out.println("Enter number " + Integer.toString(i + 1));
int n = sc.nextInt();
System.out.println("You entered: " + Integer.toString(n));

这应该可以解决问题。我还没有对它进行测试,但无论如何你都应该有一些工作要做。

注意我是如何使用字符串连接来让用户更好地了解他在过程中的位置。由于我们无法在字符串中添加数字,因此我们首先必须将其转换为Integer.toString()的字符串。这就是所有的魔力。

希望这有帮助!

答案 1 :(得分:0)

这是你在找什么?

public class Test
{
   private static final Scanner SCANNER = new Scanner(System.in);

   public static void main(final String args[]) {
      System.out.print("Enter a number: ");
      int number = SCANNER.nextInt();

      if (number < 0) {
         number *= -1;
      }

      for (int i = 0; i < number; i++) {
         System.out.print("Enter a number: ");
         SCANNER.nextInt();
      }
   }
}

答案 2 :(得分:0)

您无需用户输入计数器

       int counter = Integer.parseInt(sc.nextLine());  

你在这里做的是提示用户输入一个计数器,你甚至将它从一个字符串转换为一个int。只需删除它然后在你的forlolo中正确初始化它。添加 int 在柜台前。

来自for(counter =1; counter <= number; counter++)

至     for(int counter =1; counter <= number; counter++)

你不能在循环中设置number = sc.nextInt();因为数字是你的计数器的限制而不应该改变所以指定另一个int变量来接收循环内用户的值并且不要称之为号码。

你的代码是正确的。

如果要在数组List中插入值,只需添加一个数组变量,然后通过循环在其中插入值,然后打印它。

以下是完整代码: -

public static void main(String[] args) {

int number;

Scanner sc = new Scanner (System.in);

System.out.println("enter a number");
number = sc.nextInt();
int [] t = new int [number]; // initializing an array t of type int having a length of [number] Which is the maximum amount of values that can be stored inside the array.

for(int counter =1; counter <= number; counter++)   
{
System.out.println("Enter a number");    
int value = sc.nextInt();//stores each user value in numbers overwriting any previous value.
t[counter-1]=value;//saves the value the user entered in the array named t at the very start of the array which is at 0 
}
System.out.println("Your Array List");
for(int i =0; i<number;i++)   
{
System.out.println(t[i]);  //prints the array values from 0 till number-1 
}

}