Java - переменная не инициализирована для цикла do-while - PullRequest
0 голосов
/ 15 октября 2019

Я получаю сообщение об ошибке "Выбор не был инициализирован" в моем коде, но я уже инициализировал его незадолго до этого. Цель состоит в том, чтобы файл зацикливался на первой опции, если пользователь ввел 'y'. Мне действительно нужна ваша помощь специалиста. Код работает без кода, пока он не зацикливается, но с ним я получаю неинициализированную ошибку.

import java.util.Scanner;
/**
 *
 * @author Arren
 */
public class Math {

    /**
     * @param args the command line arguments
     */
    @SuppressWarnings("empty-statement")
    public static void main(String[] args) {
        // TODO code application logic here

        int numerator;
        int denominator;
        char Choice;

        String showFractionForm;
        int determineLowestTerm;
        float determineDecimalEquivalent;
        String determineFractionType;
        {
            do {
                Scanner input = new Scanner(System.in);
                System.out.print("Enter the numerator   ==> ");
                numerator = input.nextInt();
                System.out.print("Enter the denominator ==> ");
                denominator = input.nextInt();
                showFractionForm = (numerator + "/" + denominator);
                determineDecimalEquivalent = ((float) numerator) / denominator;
                System.out.println("***************OUTPUT***************");
                System.out.println("NUMERATOR               :  " + numerator);
                System.out.println("DENOMINATOR             :  " + denominator);
                System.out.println("FRACTION                :  " + showFractionForm);
                int smaller = numerator < denominator ? numerator : denominator;
                int HCF = -1;
                for (int i = smaller; i > 0; --i) {
                    if (numerator % i == 0 && denominator % i == 0) {
                        HCF = i;
                        System.out.println("LOWEST TERM             :  " + (numerator / HCF) + "/" + (denominator / HCF));
                        System.out.println("DECIMAL EQUIVALENT      :  " + determineDecimalEquivalent);
                        if (numerator < denominator) {
                            System.out.println("FRACTION TYPE           :  PROPER FRACTION");
                        } else if (numerator > denominator) {
                            System.out.println("FRACTION TYPE           :  IMPROPER FRACTION");
                        } else {
                            System.out.println("FRACTION TYPE           :  WHOLE NUMBER");
                        }
                        System.out.println("");
                        System.out.println("Input again? [y/n] --> ");
                        Choice = input.next().charAt(0);
                    }
                    while (Choice != 'n');
                }
            }
        }
    }
}

1 Ответ

1 голос
/ 15 октября 2019

Я просто отформатировал вашу программу и могу запустить ее без проблем. Ниже приведена отформатированная программа:

import java.util.Scanner;

/**
 *
 * @author Arren
 */
public class Math {

    /**
     * @param args the command line arguments
     */
    @SuppressWarnings("empty-statement")
    public static void main(String[] args) {
        // TODO code application logic here

        int numerator;
        int denominator;
        char Choice;

        String showFractionForm;
        int determineLowestTerm;
        float determineDecimalEquivalent;
        String determineFractionType;

        do {
            Scanner input = new Scanner(System.in);
            System.out.print("Enter the numerator   ==> ");
            numerator = input.nextInt();
            System.out.print("Enter the denominator ==> ");
            denominator = input.nextInt();
            showFractionForm = (numerator + "/" + denominator);
            determineDecimalEquivalent = ((float) numerator) / denominator;
            System.out.println("***************OUTPUT***************");
            System.out.println("NUMERATOR               :  " + numerator);
            System.out.println("DENOMINATOR             :  " + denominator);
            System.out.println("FRACTION                :  " + showFractionForm);
            int smaller = numerator < denominator ? numerator : denominator;
            int HCF = -1;
            for (int i = smaller; i > 0; --i) {
                if (numerator % i == 0 && denominator % i == 0) {
                    HCF = i;
                    System.out.println("LOWEST TERM             :  " + (numerator / HCF) + "/" + (denominator / HCF));
                    System.out.println("DECIMAL EQUIVALENT      :  " + determineDecimalEquivalent);
                }
                if (numerator < denominator) {
                    System.out.println("FRACTION TYPE           :  PROPER FRACTION");
                } else if (numerator > denominator) {
                    System.out.println("FRACTION TYPE           :  IMPROPER FRACTION");
                } else {
                    System.out.println("FRACTION TYPE           :  WHOLE NUMBER");
                }
            }
            System.out.println("");
            System.out.println("Input again? [y/n] --> ");
            Choice = input.next().charAt(0);
        } while (Choice != 'n');    
    }
}

Пример запуска:

Enter the numerator   ==> 12
Enter the denominator ==> 4
***************OUTPUT***************
NUMERATOR               :  12
DENOMINATOR             :  4
FRACTION                :  12/4
LOWEST TERM             :  3/1
DECIMAL EQUIVALENT      :  3.0
FRACTION TYPE           :  IMPROPER FRACTION
FRACTION TYPE           :  IMPROPER FRACTION
LOWEST TERM             :  6/2
DECIMAL EQUIVALENT      :  3.0
FRACTION TYPE           :  IMPROPER FRACTION
LOWEST TERM             :  12/4
DECIMAL EQUIVALENT      :  3.0
FRACTION TYPE           :  IMPROPER FRACTION

Input again? [y/n] --> 
y
Enter the numerator   ==> 
...