В чем разница между этими кодами Java с if-else?: оператор - PullRequest
0 голосов
/ 25 сентября 2019
class Rextester
{  
    public static void main(String[] args) {
        int maxArray = 0;
        int minArray = 0;
        Scanner input = new Scanner(System.in);
        int[] numArray = new int[300];
        for (int i = 0 ; i < 4 ; i++){
            int num = input.nextInt();
            if(maxArray>num){
                maxArray=maxArray;
            }else{
                maxArray=num;
            }
             if(minArray<num){
                minArray=minArray;
            }else{
                minArray=num;
            }
        }
        System.out.println(maxArray+" "+minArray);
    }
}

второй код

public class Mshmaxminarray {

    public static void main(String[] args) {
        int maxArray = 0;
        int minArray = 0;
        Scanner input = new Scanner(System.in);
        int[] numArray = new int[300];
        for (int i = 0 ; i < 300 ; i++){
            int num = input.nextInt();
            maxArray = maxArray > num ? maxArray : num ;
            minArray = minArray < num ? minArray : num ;
        }
        System.out.println(maxArray+" "+minArray);
    }
}

Может кто-нибудь сказать мне, почему два приведенных выше кода дают разное решение.

Самое высокое - это хорошо, но minArray дает неправильное решение,не «условие? if: else» так же, как if и else?

Я пытаюсь найти наибольшее и минимальное количество массивов, оба дают наибольшее, но есть проблема с минимумом.

Если оба одинаковы, почему разные решения?а если нет в чем разница?

1 Ответ

2 голосов
/ 25 сентября 2019

Эти строки различаются:

класс Rextester:

for (int i = 0 ; i < 4 ; i++){

класс Mshmaxminarray:

for (int i = 0 ; i < 300 ; i++){

Кроме того, не могли бы вы написать так?

int[] numArray = new int[300];
for (int i = 0 ; i < numArray.length ; i++){

троичный оператор

Тернарный оператор просто делает то же, что и if (condition) then statement assignment else statement assignment.

Как и в официальной документации :

Другим условным оператором является?:, Который можно рассматривать как сокращение для оператора if-then-else

"Если someCondition имеет значение true, присвойте значение value1к результату. В противном случае присвойте значение value2 результату. "

result = someCondition ? value1 : value2;

Лучший подход :

Rextester :

package myPackage;

import java.util.Scanner;
import java.util.*;

import myPackage.*;

public class Rextester {

    public static void main(String[] args) {

        int[] minMax = MyUtils.scannerMinMax(4);

        System.out.println(minMax[0] + " " + minMax[1]);
    }
}

Mshmaxminarray :

package myPackage;

import java.util.Scanner;
import java.util.*;

import myPackage.*;

public class Mshmaxminarray {

    public static void main(String[] args) {

        int[] minMax = MyUtils.scannerMinMax(300);

        System.out.println(minMax[0] + " " + minMax[1]);
    }
}

MyUtils :

package myPackage;

import java.util.Scanner;
import java.util.*;

public class MyUtils {

    public static int[] scannerMinMax(int numInt)
    {
        int minArray = 0;
        int maxArray = 0;

        Scanner input = new Scanner(System.in);

        Integer[] numArray = new Integer[numInt];

        for (int i = 0 ; i < numArray.length ; i++) {
            numArray[i] = input.nextInt();
        }

        List<Integer> listNums = Arrays.asList(numArray);

        minArray = Collections.max(listNums);
        maxArray = Collections.min(listNums);

        return new int[] {minArray, maxArray};
    }
}

Прежде всего, из-за васвыполнить те же операции в двух классах, для этого лучше создать специальный метод.

В этом методе сохраните все пользовательские входные данные в массиве, а затем найдитеи максимальное значение.

Я использую Collections, чтобы получить минимальный и максимальный элемент в массиве, после преобразования его в List.

Отказ от ответственности : Я не могу проверить код, скажите, пожалуйста, работает ли он.

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