[英]Array Sum & Average in Java
我有一个家庭作业,必须创建一个数组,对数组中的元素求和,然后找到数组中元素的平均值,但是我必须使用与求和方法相同的方法来做。
到目前为止,这就是我所看到的,我已经在书中查看并将其放入我的代码中,但是无法正确编译。
class SumArray{
public static void main(String args[]){
double[] array = {7,8,9,10,11,12,13};
sumArray(array);
}
public static double sumArray(double[] array){
double sum = 0;
for ( int i = 0; i < array.length; i++){
sum += array[i];
//System.out.println("Sum is = " + sum);
}
//System.out.println("Sum is = " +sum);
//after summing then get average
return sum;
double average = sum/array.length;
System.out.println("Average value of array element is " + average);
return average;
}
}
在开始回答之前,了解return语句的用法非常重要。 此外,您需要了解无法访问的代码的含义。 为了理解这一点,我在这里与您分享一个例子。 考虑以下代码:
public static void main(String args[]){
String returnedString;
returnedString=testReturnStatement("Rainy");
System.out.println(returnedString);
returnedString=testReturnStatement("Sunny");
System.out.println(returnedString);
returnedString=testReturnStatement("Can't figure out the weather");
System.out.println(returnedString);
}
现在暂时考虑一下如下所示的功能:
public static String testReturnStatement(String currentCondition){
return "you can go by Car or taxi"; //Line no.1
return "You can go by Motorbike or cycle"; //Line no.2
return "You can always use public transport"; //Line no.3
}
像您的情况一样,这有一个return语句列表。 在这里,第2行将给出无法访问的代码错误,因为在第1行之后,控件将被发送回main方法。 return下面的语句根本不会执行。 这就是为什么它显示无法访问的代码(通常称为无效代码)的原因。
但这并不意味着您不能在方法中有条件返回 。 您可以使用不同的return语句,直到它们处于不同的条件下为止。 最后,只有一个值可以返回到调用它的位置。
public static String testReturnStatement(String currentCondition){
if(currentCondition.equals("Rainy")){
return "you can go by Car or taxi";
}else if(currentCondition.equals("Sunny")){
return "You can go by Motorbike or cycle";
}
return "You can always use public transport";
}
因此,在您的代码中发现了同样的问题,即return语句放置不正确,因此您无法编译该代码。 除去return sum;
从您的代码中将删除您的错误。 为方便起见,我将删除return sum;
从您的代码并将其添加到此处。
public static void main(String args[]){
double[] array = {30,12,14,24,19,89,128};
sumArray(array);
}
public static double sumArray(double[] array){
double sum = 0;
for ( int i = 0; i < array.length; i++){
sum += array[i];
//System.out.println("Sum is = " + sum);
}
System.out.println(sum);
//System.out.println("Sum is = " +sum);
//after summing then get average
double average = sum/array.length;
System.out.println("Average value of array element is " + average);
return average;
}
您将在方法return sum;
因此,用方法编写的代码将无法运行。 那可能就是错误。
简便的解决方案是创建一种不同的方法来计算平均值。
class SumArray{
public static void main(String args[]){
double[] array = {7,8,9,10,11,12,13};
double results[] = sumArray(array);
System.out.println("Sum "+result[0]);
System.out.println("Average "+result[1]);
}
public static double[] sumArray(double[] array){
double sum = 0;
for ( int i = 0; i < array.length; i++){
sum += array[i];
//System.out.println("Sum is = " + sum);
}
//System.out.println("Sum is = " +sum);
//after summing then get average
double average = sum/array.length;
System.out.println("Average value of array element is " + average);
double results[] = {sum, average};
return results;
}
}
您的代码无法编译,因为在return
语句之后不能再有其他语句或声明,因为肯定无法访问该代码。
如果必须在一个方法中执行此操作,则您的方法必须返回2个值。 您可以通过不同的方式进行操作:
1)返回2个值作为数组:
// The 1st element in the returned array is the sum, the 2nd is the average
public double[] sumAvg(double[] arr) {
double sum = 0;
for (double d : arr)
sum += d;
return new double[]{sum, sum/arr.length};
}
2)为此创建一个包装器类:
class SumAvg {
public double sum, avg;
}
public SumAvg sumAvg(double[] arr) {
double sum = 0;
for (double d : arr)
sum += d;
SumAvg sa = new SumAvg();
sa.sum = sum;
sa.avg = sum / arr.length;
return sa;
}
3)返回2个值作为List
:
// The 1st element in the returned List is the sum, the 2nd is the average
public List<Double> sumAvg(double[] arr) {
double sum = 0;
for (double d : arr)
sum += d;
return Arrays.asList(sum, sum/arr.length);
}
好吧,您只需要删除return sum
。 您的代码完全正确。
同时,您也可以通过这种方式找到一个数组的和和平均值,
public class AverageArray
{
public static void main(String[] args)
{
int num[] = new int[]{30,12,14,24,19,89,128};
int total = 0;
for(int a = 0; a < num.length; a++)
{
total = total + num[a];
}
double average = total / num.length;
System.out.println("The total is : " + total);
System.out.println("Java average of array : " + average);
}
}
源和参考- 数组的总和和平均值 。
无法找到此代码,因为上面已经有一个return
语句
double average = sum/array.length;
您只需要删除return sum;
生成sum
和average
实例变量,并在方法内部为其赋予值。 因此,您可以通过一种方法来计算sum
和average
。
public class Average {
double sum,average;
public static void main(String[] args) {
double[] numbers = {1,2,3,4,5,6,7};
sumAndAverage(numbers);
System.out.println("Average is " + this.average+" and sum is "+this.sum);
}
public static void sumAndAverage(double[] numbers)
{
for (int i = 0; i < numbers.length; i++) {
this.sum += numbers[i];
}
this.average = this.sum / numbers.length ;
}
}
public class ToFindAverage {
public static void main(String[] args) {
double total;
double average;
int i;
int[] list;
list = new int[4]; //make container for 4
list[0] = 1;
list[1] = 2;
list[2] = 3;
list[3] = 4;
total = 0;
for (i = 0; i < list.length; i++) {
total = total + list[i];
}
average = total / list.length;
System.out.println("The total average is " + average);
}
}
认为您应该增加一点OOP。 创建这样的课程,您的老师会留下深刻的印象,将给与金钱补助,并将您送往IT竞赛:
class MathArray {
private double[] data;
public MathArray(double[] data) {
this.data = data;
}
public double getSum() {
double out = 0;
for(double d : data) {
out += d;
}
return out;
}
public double getAverage() {
return getSum() / data.length;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.