Професионална програма
Loading...
+ Нов въпрос
Galinagg avatar Galinagg 2 Точки

Odd / Even Position with Java

Здравейте, искам да помоля за помощ за задача 3  (Четни / нечетни позиции):

https://softuni.bg/trainings/resources/officedocument/50158/for-loop-exercises-programming-basics-with-java-june-2020/2969

Това е моето решение:

https://pastebin.com/mpwAGkC6

И при самото отпечатване в конзолата ми дава разместени редовете и не мога да разбера защо

 

Тагове:
1
Programming Basics
MartinBG avatar MartinBG 3751 Точки
Best Answer

Има няколко грешки в решението.

  1. На входа е възможно да бъдаа подавани и негативни числа, което ще счупи логиката за откриване на мин./макс. число:
            double oddMin = Double.MAX_VALUE;
            double oddMax = Double.MIN_VALUE; // логиката ще работи само за положителни числа
            double evenMax = Double.MIN_VALUE;// логиката ще работи само за положителни числа
            double evenMin = Double.MAX_VALUE;
            double oddMin = Double.MAX_VALUE;
            double oddMax = -Double.MAX_VALUE; // работи и за отрицателни числа
            double evenMax = -Double.MAX_VALUE;// работи и за отрицателни числа
            double evenMin = Double.MAX_VALUE;


     

  2. Грешка при намирането на четно/нечетно число:
     

            for (int i = 1; i <= n ; i++) {
                double number = Double.parseDouble(scanner.nextLine());
                if (number % 2 == 0) { // грешка!
            for (int i = 1; i <= n ; i++) {
                double number = Double.parseDouble(scanner.nextLine());
                if (i % 2 == 0) { // правилно


     

  3. Грешки при формаирането и извеждането на изходните данни (забележете, че всички варианти са обединени в един общ if/else if/else блок):

            if (n == 0) {
                System.out.println("OddSum=0.00,");
                System.out.println("OddMin=No,");
                System.out.println("OddMax=No,");
                System.out.println("EvenSum=0.00,");
                System.out.println("EvenMin=No,");
                System.out.println("EvenMax=No");
            } else if (n == 1) {
                System.out.printf("OddSum=%.2f,%n", oddSum);
                System.out.printf("OddMin=%.2f,%n", oddMin);
                System.out.printf("OddMax=%.2f,%n", oddMax);
                System.out.println("EvenSum=0.00,");
                System.out.println("EvenMin=No,");
                System.out.println("EvenMax=No");
            } else {
                System.out.printf("OddSum=%.2f,%n", oddSum);
                System.out.printf("OddMin=%.2f,%n", oddMin);
                System.out.printf("OddMax=%.2f,%n", oddMax);
                System.out.printf("EvenSum=%.2f,%n", evenSum);
                System.out.printf("EvenMin=%.2f,%n", evenMin);
                System.out.printf("EvenMax=%.2f%n", evenMax);
            }


     

2
Galinagg avatar Galinagg 2 Точки

МНОГО Благодаря ! 

1
svephoto avatar svephoto 473 Точки

Здравей, Galinagg,

 

Виж какво ще стане, ако накрая принтирането в else-проверката ти е написано така:

 

else {
    System.out.printf("OddSum=%.2f,%n", oddSum);
    System.out.printf("OddMin=%.2f,%n", oddMin);
    System.out.printf("OddMax=%.2f,%n", oddMax);
    System.out.printf("EvenSum=%.2f,%n", evenSum);
    System.out.printf("EvenMin=%.2f,%n", evenMin);
    System.out.printf("EvenMax=%.2f%n", evenMax);
}

 

Изразите за стринг форматирането в кавичките трябва да изглеждат също като тези в if-овете ти над else-a. Не разбирам защо имаш плюсове пред oddSum, oddMin и т. н. Иначе подозирам, че може да имаш и други проблеми освен разместването, но пиши пак, ако наистина имаш - да помагаме отново.

 

Успех!

1
13/12/2020 19:50:23