我是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;
}
}
任何帮助都会很棒!
答案 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。