Как получить вывод моих переменных для сортировки от наименьшего к наибольшему? - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть лаборатория для класса программирования, который я почти закончил, и я верю, что выполнил все шаги в меру своих возможностей, за исключением того, что я не могу получить результат от моих трех переменных int1, int2 иint3 для правильной сортировки в выводе консоли.Может быть, это проблема с моими вложенными условными утверждениями.Наш профессор не совсем адекватно объяснил тонкости условных утверждений, которые нам нужны, чтобы хорошо их использовать.Я опубликую свой код ниже.

Вот инструкции с блок-схемой, которую он сделал: https://www.dropbox.com/s/q9hfuo5nzmbvrg3/Lab03%20Assignment.pdf?dl=0

 package lab03;
import java.util.Scanner;
public class Lab03 {
    public static void main(String[] args) {
        // Create the scanner input
        Scanner input;
        input=new Scanner(System.in);
        // Prompt the user to enter the first integer between 0 and 99.
        int input1;
        System.out.println("Please enter an integer between 0 and 99: ");
        input1 = input.nextInt();
        // Check if input1 is within a valid range.
        if (input1 <0 || input1 > 99) {
          // If the input is outside of the range, give them a second chance to correct their error.
          System.out.println("Please try again and enter an integer THAT MUST BE between 0 and 99: ");
          input1 = input.nextInt();
        }
          // Check input1 again.
        if (input1 <0 || input1 > 99) {
            // Still invalid a second time? Exit the program!!!
                  System.out.println("Still outside of the valid range. Program ending...");
                  return;
        }
            else {
            // Prompt the user to enter the second integer between 0 and 99.
            int input2;
            System.out.println("Please enter a second integer between 0 and 99: ");
            input2 = input.nextInt();
            // Check if input2 is within valid range.
            if (input2 <0 || input2 > 99) {
                // If the input is outside of the valid range, give them another chance to correct their mistake.
                System.out.println("Please attempt this one more time and enter a second integer THAT IS REQUIRED TO BE between 0 and 99: ");
                input2 = input.nextInt();
                // Check input2 again.
                if (input2 <0 || input2 > 99) {
                    // Still invalid for the 2nd time? Exit the program!!!!!
                    System.out.println("Your second integer is still outside of an acceptable range. Program is now terminating...hasta la vista, baby!");
                    return;
                }
            }
            // Declare max and min variables.
            int max;
            int min;
                /* Compare the values of input1 and input2 to determine which one is "min" and which one is "max" so that the message shown to user makes sense.
                i.e. if the two integers are 20 and 80. 20 is smaller so it must be the min, while 80 is larger so it must be the max.
                It also compensates if the user inserts the larger number for the first input prompt and a smaller one for the second prompt
                Our program will automatically fix the order.
            */
                if (input1 < input2) {
                    min = input1;
                    max = input2;
                }
                else {
                    min = input2;
                    max = input1;
                }
            // Use the functions to assign values for int1, int2, and int3 using the combo of the min and max values as well as the Math.random method in the Math class.
            double int1;
                int1 = min + (int)(Math.random() * ((max - min) + 1));
            double int2;
                int2 = min + (int)(Math.random() * ((max - min) + 1));
            double int3;
                int3 = min + (int)(Math.random() * ((max - min) + 1));
            // Swap values of the integers if needed to allow for correct sorting output later on.
                if (int1 > int2) {
                double temp = int1;
                int1 = int2;
                int2 = temp;
            }
                else if (int2 > int3) {
                double temp = int2;
                int2 = int3;
                int3 = temp;
            }
                else if (int1 > int2) {
                double temp = int1;
                int1 = int2;
                int2 = temp;
            }
            // Output the range of min and max.
            System.out.println("The range begins at " + min + " and ends at " + max);
            // Output three random sorted integers
            System.out.println("Three sorted random integers between " + min + " and " + max + " are: ");
            // For the three integers, we must determine if the integer is odd or even so that the appropriate label can be appended to the output. A number is even if it is divisible by 2, else it is odd.
            if (int1 % 2 == 0) {
                System.out.println((int) int1 + " Even");
            }
            else {
                System.out.println((int) int1 + " Odd");
            }
            if (int2 % 2 == 0) {
                System.out.println((int) int2 + " Even");
            }
            else {
                System.out.println((int) int2 + " Odd");
            }
            if (int3 % 2 == 0) {
                System.out.println((int) int3 + " Even");
            }
            else {
                System.out.println((int) int3 + " Odd");
            }
            // Define sum
            double sum = int1 + int2 + int3;
            // Define product
            double product = int1 * int2 * int3;
            // Define quotients
            double quotient1 = (int1 / int2);
            double quotient2 = (quotient1 / int3);
            double quotient = (quotient2);
            // Display sum output
            System.out.println("Sum = " + (int) sum);
            // Display product output
            System.out.println("Product = " + (int) product);
            // Display quotient output
            System.out.println("Quotient (Int1 / Int2 / Int3) = " + quotient);
            }
    }
}

Следует отметить, что мы не можем использовать более эффективные методыкак циклы или массивы решения задачи в задании, поскольку мы еще не изучали это вместе как класс, и он не хочет, чтобы мы продвигались вперед в книге.Мы можем использовать оператор switch, но я не использовал его здесь, потому что не думаю, что он мне нужен.

Буду признателен за любую помощь.Может быть, это поможет кому-то еще, если он - новый Java-программист и имеет аналогичную проблему в своих проектах.

РЕДАКТИРОВАТЬ: Это часть инструкций, которые я изо всех сил стараюсь заставить работать: "Программа будетзатем отсортируйте их в порядке возрастания, используя операторы принятия решений, и выведите их на консоль в порядке возрастания на отдельных строках. "

1 Ответ

0 голосов
/ 22 сентября 2018

Вы сделали это почти идеально.Небольшое изменение. else if будет превышено только в случае сбоя if.Так, например, при вводе 8 9 7 вы не поменяете местами 8 и 9, поскольку 8 не больше 9 в 1-м if состоянии, а 2-е else if никогда не будет выполнено.

Правильнокод будет использовать для 3 независимых if операторов.

if (int1 > int2) {
    double hold = int1;
    int1 = int2;
    int2 = hold;
}
if (int2 > int3) {
    double hold = int2;
    int2 = int3;
    int3 = hold;
}
if (int1 > int2) {
    double hold = int1;
    int1 = int2;
    int2 = hold;
}

Кроме того, замените temp на hold, как указано в вашем назначении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...