Компилятор сообщает, что переменная не инициализирована - PullRequest
2 голосов
/ 09 мая 2020

Я новичок в Java и Android Studio. Я сделал (несколько сложный) калькулятор, который вычислял дроби вместе с целыми числами, а также смешанные дроби. Он работает, сначала преобразовывая введенное число (в каком бы формате оно ни было) в дробь, а затем вычисляя. Вот часть кода:

buttonAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String fraction_1 = editTextNum1.getText().toString();
                String fraction_2 = editTextNum2.getText().toString();
                int Num1, Den1, Num2, Den2;
                if (fraction_1.contains("/") && !fraction_1.contains(" ")){
                    Num1 = Integer.parseInt(getFraction(fraction_1)[0]);
                    Den1 = Integer.parseInt(getFraction(fraction_1)[1]);
                } else if (fraction_1.contains(" ") && fraction_1.contains("/")){
                    int[] frac1 = convertFromMixed(fraction_1);
                    Num1 = frac1[0];
                    Den1 = frac1[1];
                }
                else if (!fraction_1.contains("/")) {
                    Num1 = Integer.parseInt(fraction_1);
                    Den1 = 1;
                }
                else{
                    invalidinput invalidinput = new invalidinput();
                    invalidinput.show(getSupportFragmentManager(), "num1error");

                }
                if (fraction_2.contains("/") && !fraction_2.contains(" ")){
                    Num2 = Integer.parseInt(getFraction(fraction_2)[0]);
                    Den2 = Integer.parseInt(getFraction(fraction_2)[1]);
                } else if (fraction_2.contains(" ") && fraction_2.contains("/")){
                    int[] frac2 = convertFromMixed(fraction_1);
                    Num2 = frac2[0];
                    Den2 = frac2[1];
                }
                else if (!fraction_2.contains("/")){
                    Num2 = Integer.parseInt(fraction_2);
                    Den2 = 1;
                } else{
                    invalidinput invalidinput = new invalidinput();
                    invalidinput.show(getSupportFragmentManager(), "num2error");

                }

                int commonDen = getLCM(Den1, Den2);
                Num1 = (commonDen/Den1)*Num1;
                Num2 = (commonDen/Den2)*Num2;
                int addNum = Num1 + Num2;

                if (simplify.isChecked()){
                    String result = simplify(addNum, commonDen);
                    result = checkFor1(result);
                    result = checkForWhole(result);


                    textViewResult.setText(result);
                } else {
                    String result = addNum + "/" + commonDen;
                    result = checkFor1(result);
                    textViewResult.setText(result);
                }
            }
        });

Я получаю сообщение об ошибке в последней части, где вычисляется commonDen. Он говорит, что Num1, Num2, Den1 и Den2 не инициализированы. Это всего лишь добавочная часть. Я получаю сообщение об ошибке, когда эти переменные используются для расчета. Пожалуйста, помогите.

1 Ответ

2 голосов
/ 09 мая 2020

Значит, вам нужно инициализировать переменные. Вы можете сделать это,

изменив

int Num1, Den1, Num2, Den2;

на

int Num1 = 0, Den1 = 0, Num2 = 0, Den2 = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...