要求用户输入数量到数组

时间:2014-09-11 19:00:15

标签: java arrays user-input

我是Java的新手,我对数组的基础知识有些困难。一些帮助将不胜感激:)。

我创建了一个程序,要求用户在数组中输入值。然后,程序告诉用户数组中有多少项,数组中的偶数,数组中的奇数以及数组中所有数字的平均值。

我的问题是:目前我的程序在数组中有一定数量的值,共有5个项目。我想更改此设置,以便用户可以确定数组中他们想要的项目数量,并要求用户不断向数组中添加值,直到他们输入“Q'退出输入值,以便程序可以继续。

我不想修改我的代码,只是用户确定数组中项目数量的部分。

这是我的代码:

//main class
public class Even_number_array {

public static void main(String[] args) {

    array_class obj=new array_class();
    obj.get_numbers();
    obj.set_arraylist();
    obj.set_numbers();
    obj.get_average_of_array();


}
}

//another class

import java.util.Scanner;

public class array_class {

private int[] arr=new int[5]; //here is where I would like to modify my code so 
                           //that the user can determine amount of items in array                                             


Scanner keyboard=new Scanner(System.in);

public int[] get_numbers() //asks user to add items to array
{
  System.out.println("Please enter numbers for array :");
  for (int i=0; i<this.arr.length; i++)
  {
    this.arr[i] = keyboard.nextInt();
  }
    System.out.println("There are "+((arr.length))+ " numbers in array");
    return this.arr;
}

public void set_numbers() //Tells user what even & odd numbers are in array
{
 System.out.println();
 System.out.println("These even numbers were found in the array:");
 for (int i=0; i<arr.length;i++)
 {
  if (arr[i]%2==0)
  {
   System.out.print(arr[i]+" ");
   System.out.println();
  }
 }

 System.out.println("These odd numbers were found in the array:");
 for (int i=0; i<arr.length;i++)
 {
  if ((arr[i]%2)!=0)
 {
   System.out.print(arr[i]+" ");      
  }
 }
}

public void set_arraylist() //Dispalys all items in array
{
 System.out.println("These are the numbers currently in your array: ");

 for (int i=0; i<arr.length; i++ )
 {
  System.out.print(this.arr[i]+ " ");
 }
}

public double get_average_of_array() //Gets average of all items in array
{
 double sum=0;
 double average=0;

System.out.println();
System.out.println("the average is: ");
 for (int i=0; i<this.arr.length; i++)
 {     
  sum=sum+arr[i];
  average =sum/arr.length;

 }
  System.out.println(average);
  return average;
}
}

任何帮助都会很棒!

5 个答案:

答案 0 :(得分:1)

尝试:

public int[] get_numbers() {
    System.out.println("Please enter numbers for array :");
    int size = keyboard.nextInt();
    int[] values = new int[size];   // create a new array with the given size
    for (int i = 0; i < size; i++) {
        values[i] = keyboard.nextInt();
    }
    System.out.println("There are "+((values.length))+ " numbers in array");
    this.arr = values;
    return this.arr;
}

答案 1 :(得分:0)

对不起,我真的没有得到你的要求,但也许你的意思是

Scanner scanner = new Scanner(System.in);

    System.out.println("Enter a number");

    int[] array = new int[scanner.nextInt()];

    System.out.println(array.length);

对不起,我在java中的表现非常差,现在已经学习了2个月

答案 2 :(得分:0)

ArrayList是您想要的对象。它具有允许您在末尾附加值的功能。它是一个动态数组,你可以随意改变它。

答案 3 :(得分:0)

使用ArrayList代替数组将是您完成目标的最简单方法。

另一种选择是询问该人计划从一开始就输入多少个号码。

如果出于一些奇怪的原因,你只是试图使用数组而不询问用户他们想要输入多少个数字......第三个选项是创建一个新数组(比一个大一个每次用户输入另一个号码时,前一个数组)

最后一篇文章的一些指导...

public int[] get_numbers() //asks user to add items to array
{
  System.out.println("Please enter numbers for array :");
  //Instead of this for loop, you will want a while loop. Similar to "while (userHasntEnteredQ)"
  for (int i=0; i<this.arr.length; i++)
  {
    //You will want to create a new array here.
    // int[] newArray = new int[this.arr.length + 1];
    // Then copy the values of this.arr to newArray
    // Then place the keyboard.nextInt() into the last spot of newArray
    // Then set this.arr to newArray
  }
    System.out.println("There are "+((arr.length))+ " numbers in array");
    return this.arr;
}

答案 4 :(得分:0)

如果您希望用户确定数组中有多少项,请将其添加到您的代码中:

System.out.println("Enter the amount of items in the array:");
while (keyboard.hasNextInt()) {
    int i = keyboard.nextInt();
}
private int[] arr = new int[i];

但是,如果没有获得ArrayIndexOutOfBoundsException,您将无法向用户定义的项目添加更多项目,因此有一种更好的方法可以使用名为{{1 }}。使用ArrayList时,您不必担心在使用之前设置数组的大小;它只是在添加新项目时自动扩展,除非您明确设置它的大小。 ArrayList可以是任何对象,但只为了整数,请将其声明为:

ArrayList

将项目添加到ArrayList<Integer> arr = new ArrayList<>();

ArrayList

按索引读取值:

arr.add(item);

获取项目的索引:

arr.get(index);

您可以使用int index = arr.indexOf(item); 做更多事情。阅读它here