[英]Accepting input through an array in Java
我正在嘗試讓用戶輸入數字數組(=學生的分數)。 同樣,用戶自己將決定數組的大小,即班上的學生人數。 接受了每個學生的分數后,我想將它們存儲在一個數組中,顯示所有學生的分數,並計算班級的平均值。 稍后會達到平均水平。 有人可以幫我解決這段(顯然是錯誤的)代碼,謝謝!
package chapter2.Arrays;
import java.util.*;
public class Arrays_ExampleOne {
static int size;
static int marks;
static int [] numbers=new int [size];
static Scanner in=new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Welcome to Cincinnati Elementary");
System.out.println("Class report details for ");
System.out.println("Enter the number of students in the class");
size=in.nextInt();
System.out.println("Enter the marks of each student");
for(int i=0;i<=size;i++)
{
numbers[i]=in.nextInt();
}
/* System.out.println("The marks of all students are"+ " ");
{
for(int i=0;i<=size;i++)
{
System.out.print(numbers[i]);
}
System.out.println();
}
//int avg=
*/}
}
================================================== =========
修改后的代碼,希望在main之外創建一個函數以計算數組的平均值:
package chapter2.Arrays;
import java.util.*;
public class Arrays_ExampleOne {
/*static int size;
static int marks;
static int [] numbers=new int [size];*/
static Scanner in=new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Welcome to Cincinnati Elementary");
System.out.println("Class report details for ");
System.out.println("Enter the number of students in the class");
int size;
//static int marks;
//static int [] numbers=new int [size];
size=in.nextInt();
int [] numbers=new int [size];
System.out.println("Enter the marks of each student");
for(int i=0;i<size;i++)
{
numbers[i]=in.nextInt();
}
System.out.println("The marks of all students are:"+ " ");
{
for(int temp:numbers)
{
System.out.print(temp+ " ");
}
System.out.println();
}
int arraySize=numbers.length;
int arraySum=0;
//Calculate the sum of array elements
for(int temp1:numbers)
{
arraySum+=temp1;
}
int average=arraySum/arraySize;
System.out.println("The average of all the students scores is:"+ " "+average);
}
/*public int calculateAverage(int array[])
{
int arraySize=array.length;
}*/
}
================================================== =============在main之外添加了用於計算平均值的單獨代碼。
package chapter2.Arrays;
import java.util.*;
public class Arrays_ExampleOne {
/*static int size;
static int marks;
static int [] numbers=new int [size];*/
static Scanner in=new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
Arrays_ExampleOne obj=new Arrays_ExampleOne();
System.out.println("Welcome to Cincinnati Elementary");
System.out.println("Class report details for ");
System.out.println("Enter the number of students in the class");
int size;
//static int marks;
//static int [] numbers=new int [size];
size=in.nextInt();
int [] numbers=new int [size];
System.out.println("Enter the marks of each student");
for(int i=0;i<size;i++)
{
numbers[i]=in.nextInt();
}
System.out.println("The marks of all students are:"+ " ");
{
for(int temp:numbers)
{
System.out.print(temp+ " ");
}
System.out.println();
}
/* int arraySize=numbers.length;
int arraySum=0;
//Calculate the sum of array elements
for(int temp1:numbers)
{
arraySum+=temp1;
}
int average=arraySum/arraySize;
System.out.println("The average of all the students scores is:"+ " "+average);*/
int average=obj.calculateAverage(numbers);
System.out.println("The average of all the students is:"+ " "+average);
}
public int calculateAverage(int array[])
{
int arraySize=array.length;
int arraySum=0;
for(int temp: array)
{
arraySum+=temp;
}
int average=arraySum/arraySize;
return average;
}
}
首先,應先要求用戶輸入大小,然后設置數組大小:
static int size;
static int marks;
static Scanner in=new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter number of student:");
size = in.nextInt();
int [] numbers=new int [size];
//the rest of your code goes here
}
注意:請注意您的for循環:
for(int i=0;i<=size;i++){
^
numbers[i]=in.nextInt();
}
這將導致ArrayIndexOutOfBoundException
,因為你想在索引訪問元素size
,其最大index
有n大小的數組為n-1。 應該是 <
而不是<=
對於方法calculateAverage,它應如下所示:
public static double calculateAverage(int array[])
{
double sum=0.0;
for(int i=0;i<array.length;i++){
sum+=array[i];
}
return sum / array.length;
}
請注意,此方法應該是靜態的,因為您想在靜態方法中使用它,並且average始終處理double
/ float
數據類型,而不是int
在main方法中,您可以這樣調用它:
System.out.println("Average marks:"+calculateAverage(numbers));
static int size;
static int marks;
static int [] numbers=new int [size];
創建數組時, size
仍為默認值零。 在這里,您總是以長度為零的數組結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.