Вызвать метод Java Class для работы со значениями EditTexts - PullRequest
0 голосов
/ 16 февраля 2019

Моя проблема со значениями 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;
        }
    }

Как видите, я подумал, что если я сначала вызову метод Calculate, чем получатель, я смогу достичь результата, но он не работает.Я ожидал этого.Каково решение?Я беспомощен с этим.Что и / или как мне следует решить проблему, чтобы работать с 5 входами с помощью Calculate Average, а затем получить окончательное значение для отображения во втором фрагменте?

Заранее спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Попробуйте это:

public class Average {

    double numberOfGradeOne, numberOfGradeTwo, numberOfGradeThree, numberOfGradeFour, numberOfGradeFive;
     double numberOfGrades, gradeSum, gradeAverage;

    public Average(double numberOfGradeOne, double numberOfGradeTwo, double numberOfGradeThree, double numberOfGradeFour, double numberOfGradeFive, double numberOfGrades) {
        this.numberOfGradeOne = numberOfGradeOne;
        this.numberOfGradeTwo = numberOfGradeTwo;
        this.numberOfGradeThree = numberOfGradeThree;
        this.numberOfGradeFour = numberOfGradeFour;
        this.numberOfGradeFive = numberOfGradeFive;
        this.numberOfGrades = numberOfGrades;
        calculateAverage();
    }

    void calculateAverage () {
        numberOfGrades=numberOfGradeFive+numberOfGradeFour+numberOfGradeThree+numberOfGradeTwo+numberOfGradeOne;
        gradeSum =5*numberOfGradeFive+4*numberOfGradeFour+3*numberOfGradeThree+2*numberOfGradeTwo+numberOfGradeOne;
        gradeAverage=gradeSum/numberOfGrades;
    }

    public double getGradeAverage() {
        return gradeAverage;
    }
}

В вашем фрагменте:

average = new Average(12,34,54,12,44.6,5);
        Log.v("Average",""+average.getGradeAverage());
        textView.setText(average.getGradeAverage()+" ");

Или вы можете даже прокомментировать calcAverage ();от конструктора и позвоните так:

average = new Average(12,34,54,12,44.6,5);
        average.calculateAverage();
        Log.v("Average",""+average.getGradeAverage());
        textView.setText(average.getGradeAverage()+" ");
0 голосов
/ 16 февраля 2019

Вы должны попытаться использовать static method, а затем вызвать, позвонив 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;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...