java - 调用 Java 类方法来处理 EditTexts 的值
问题描述
我对 EditTexts 值的问题已解决(将数据从片段传递到另一个片段),所以现在我终于可以继续使用这些值了。但是除了我还有另一个问题,还有谁呢?我没有,但我有一些。
所以,我的目标是从用户那里获得 5 个值,并且我想使用这个值(计算平均值)。
正如我在上一个主题中提到的,我有一个 Java 类,它有很多方法。其中一种方法是成绩计算器。
我的普通 Java 类的一部分:
package com.example.afotel;
import java.util.ArrayList;
public class Average {
double numberOfGradeOne, numberOfGradeTwo, numberOfGradeThree, numberOfGradeFour, numberOfGradeFive;
private double numberOfGrades, gradeSum, gradeAverage;
void calculateAverage (double numberOfGradeFive, double numberOfGradeFour, double numberOfGradeThree, double numberOfGradeTwo, double numberOfGradeOne) {
numberOfGrades=numberOfGradeFive+numberOfGradeFour+numberOfGradeThree+numberOfGradeTwo+numberOfGradeOne;
gardeSum=5*numberOfGradeFive+4*numberOfGradeFour+3*numberOfGradeThree+2*numberOfGradeTwo+numberOfGradeOne;
gradeAverage=gradeSum/numberOfGrades;
}
public double getAverage () {
return gradeAverage;
}
在我的第二个片段(jegyekFelLe(请注意它不是英语))中,我想调用 Java 类的成绩计算器方法。
package com.example.afotel;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
public class jegyekFelLe extends Fragment {
public jegyekFelLe() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_jegyek_fel_le, container, false);
Bundle bundle = getArguments();
String gradeFive = bundle.getString("Five");
String gradeFour = bundle.getString("Four");
String gradeThree = bundle.getString("Three");
String gradeTwo = bundle.getString("Two");
String gradeOne = bundle.getString("One");
Average average = new Average();
double five, four, three, two, one;
five=Double.valueOf(gradeFive);
four=Double.valueOf(gradeFour);
three=Double.valueOf(gradeThree);
two=Double.valueOf(gradeTwo);
one=Double.valueOf(gradeOne);
averaga.calculateAverage (five,four, three, two, one);
double averageH=0;
averageH=average.getAverage();
gradeFive = String.valueOf(averageH);
TextView averageText = (TextView) rootView.findViewById(R.id.average_id);
averageText.setText(gradeFive);
return rootView;
}
}
如您所见,我想,如果我先调用 calculateAverage 方法,那么我可以得到结果,但它不起作用。我对此有所期待。解决办法是什么?我对此无能为力。什么或/以及我应该如何解决问题,使用 5 个输入和 calculateAverage 并获得最终值以显示在第二个片段中?
提前感谢您的帮助!
解决方案
您应该尝试通过调用来使用static method
then 调用Average.calculate(gradeOne, gradeTwo, gradeThree, gradeFour, gradeFive)
。class
应该看起来像这样。
import java.util.Arrays;
import java.util.OptionalDouble;
import java.util.concurrent.atomic.AtomicReference;
public class Average {
public static double calculate(double... inputs) {
AtomicReference<Double> multiplier = new AtomicReference<>((double) 0);
OptionalDouble average = Arrays.stream(inputs)
.map(value -> {
multiplier.set((multiplier.get() + 1));
return value * multiplier.get();
})
.average();
return average.isPresent() ? average.getAsDouble() : 0;
}
}
推荐阅读
- c++ - 为什么我的代码给我一个内存错误?C++
- python - 在 Mac M1 上安装 Tesserocr
- python - 如何在深色和浅色 ttk 主题之间切换?
- azure-blob-storage - 我们可以通过 python 将数据附加到存储在 Azure blob 存储中的现有 csv 文件吗?
- java - 在 Selenium WebDriver 上,如何从文本标签内的标题标签中获取文本
- android - 如何创建一个除了在链接库中实例化 NativeActivity 之外什么都不做的 Android Studio 项目?
- java - ImageIO 找不到文件
- spring - 多线程情况下弹簧腹板通量的行为
- azure-monitoring - StorageRead 和 StorageWrite 代表什么
- python - 安装certbot后的nginx问题,不重定向请求