Софтуерно Инженерство
Loading...
Djombeto avatar Djombeto 5 Точки

6. Баланс по сметка (JAVA / LOOP) // Помощ!

УСЛОВИЕ

Напишете програма, която пресмята колко общо пари има в сметката, след като направите определен брой
вноски. На първия ред ще получите колко вноски трябва да се направят. На всеки следващ ред ще
получавате сумата, която трябва да внесете в сметката, докато не се достигне броя вноски. При всяка
получена сума на конзолата трябва да се извежда "Increase: " + сумата и тя да се прибавя в сметката.
Ако получите число по-малко от 0 на конзолата трябва да се изведе "Invalid operation!" и програмата
да приключи. Когато програмата приключи трябва да се принтира "Total: " + общата сума в сметката
закръглена до втория знак след десетичната запетая.

Вход 2:

  5
 120
45.55
-150

 

По-долу е  и решението ми, на което JUDGE дава грешка на втори вход "Your output: 120.0 / Expected output: 120.00" .

Въпросът ми е следния:

– Когато в решението  сменя System.out.println("Increase: " + sum);  с  System.out.printf("Increase: %.2f" , sum); , за да порправя грешката, която ми дава  JUDGE в IntelliJ ми дава тази грешка, защо?

Increase: Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double
    at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4421)
    at java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2936)
    at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2890)
    at java.base/java.util.Formatter.format(Formatter.java:2671)
    at java.base/java.io.PrintStream.format(PrintStream.java:1053)
    at java.base/java.io.PrintStream.printf(PrintStream.java:949)
    at p05.main(p05.java:20)

 

РЕШЕНИЕ:

import java.util.Scanner;

public class p05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int in = Integer.parseInt(scanner.nextLine());
        int deposit = 0;
        double total = 0.0;

        while (deposit < in) {
            double sum = Double.parseDouble(scanner.nextLine());
            if (sum < 0) {
                System.out.println("Invalid operation!");
                break;

            }

            total += sum;
            System.out.println("Increase: " +  sum);
            deposit++;


        }
        System.out.printf("Total: %.2f " , total);
    }
}
Тагове:
0
Основи на програмирането 07/11/2018 21:36:35
TeodorTsenkov96 avatar TeodorTsenkov96 31 Точки
Best Answer
На мен не ми изкарва тази грешка, изкарва ми грешка за празен стринг. Добавил съм %n в тази част от кода ти, за да добави нов ред и се решава този проблем.


total += sum;
System.out.printf("Increase: %.2f%n" , sum);
deposit++;

Ако все пак не тръгне ето ти работещ код - https://pastebin.com/rMZw0cyU

0