Groovy максимальное значение в массиве - PullRequest
0 голосов
/ 13 декабря 2018

Цель этого кода - просто найти максимум чисел в списке а и умножить его на 1,5. Первый ввод определяет количество чисел, которое вводит пользователь.Второй вход - это двойные числа, которые являются числами.Я использовал массив, чтобы собрать мои числа и найти из него максимальное значение.

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

Мои данные

10
750.55
1555.99
524.12
5268.00
789.4569  // program shows this a max value
1245.78
124.556
175.56
1796.46
7564.994

Ниже мой код:

class Main {
    static void main(String[] args) {
        Scanner sc = new Scanner(System.in)
        def NoofTrans = Integer.parseInt(sc.nextLine())
        def Transamt = [NoofTrans]
        for (int i = 0; i < NoofTrans; i++) {

            Transamt[i]=sc.nextLine()
        }

        def Creditlimit
        println Transamt.max()

        Creditlimit=Transamt.max().toDouble()
        def Creditlimit1=(Creditlimit*5)
        println Creditlimit1
        println Creditlimit1.round(2)
    }
}

Мой вывод ниже

789.4569
1184.19

, тогда как должно быть

7564.994
11347.49

1 Ответ

0 голосов
/ 13 декабря 2018

Есть две проблемы:

1 - Вы смешали числа и строки в одном списке.Таким образом, максимум, который вы нашли, не использовал числовое сравнение.Вам нужно использовать nextDouble(), чтобы Сканер дал вам число:

Transamt[i] = sc.nextDouble();

2 - ваш код умножается на максимум на 5, тогда как вы хотите умножить его на 1.5.Это только привело к неожиданным результатам.

Вот полный код:

class MainGroovy {
    static void main(String[] args) {
        Scanner sc = new Scanner(System.in)
        def NoofTrans = Integer.parseInt(sc.nextLine())
        def Transamt = [NoofTrans]

        for (int i = 0; i < NoofTrans; i++) {
            Transamt[i] = sc.nextDouble()
        }

        println Transamt.max()

        def Creditlimit = Transamt.max()
        def Creditlimit1 = Creditlimit * 1.5
        println Creditlimit1
        println Creditlimit1.round(2)
    }
}

Когда выполняется с вашим вводом, вывод:

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