Loading...
igrilkul avatar igrilkul 0 Точки

Задача 11 Odd/Even position от Цикли

Здравейте, имам проблем със запетаите, вече повече от час се мъча да го измъдря, ама не се получава. Ако ги оставя с нулите double-ите Judge ми връща грешка, но ако ги форматирам да принтирва цели числа пак ми връща грешка (1.5, 2.5, 1.75 и т.н.). Въпросът ми е как може да премахнем само ненужните нули. Пробвах с DecimalFormat но нещо не мога да му схвана цаката и някъде го бъркам сигурно.
Ето моят код: https://pastebin.com/eMiCYpyS

Тагове:
0
Programming Basics
igrilkul:
задачата е решена
traykova44 avatar traykova44 93 Точки
Best Answer

bool , int, string

https://pastebin.com/dkT8uACJ

0
Todor030366 avatar Todor030366 11 Точки

На пръв поглед:

DecimalFormat format = new DecimalFormat("#.#")

трябва да е 

DecimalFormat format = new DecimalFormat("#.##");

 

Ако е същата задачата, защото не си дал линк към задачата. 

0
igrilkul avatar igrilkul 0 Точки

На С# видях как става вече, но аз С# не знам и се мъча на Java 

0
mobretenova avatar mobretenova 1 Точки

Моля, помогнете и на мен.

Същата задача, същият проблем.

Пробвах, следвайки вашите коментари, но не приема "df" от 

{System.out.printf("OddSum=%s%n", df.format(oddSum));} - оцветява го в червено.

Кодът:

import java.text.DecimalFormat;
import java.util.Formatter;
import java.util.Scanner;

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

        double n = Double.parseDouble(console.nextLine());
        double oddSum = 0.0;
        double evenSum = 0.0;
        double oddMinNumber = 1000000000.0;
        double oddMaxNumber = -1000000000.0;
        double evenMinNumber = 1000000000.0;
        double evenMaxNumber = -1000000000.0;
        DecimalFormat format = new DecimalFormat("#.##");

        for (int i = 1; i <= n; i++) {
            Double currentNumber = Double.parseDouble(console.nextLine());
            if (i % 2 != 0) oddSum += currentNumber;
            else evenSum += currentNumber;
            if (currentNumber > oddMaxNumber && (i % 2 != 0)) {oddMaxNumber = currentNumber;}
            if (currentNumber > evenMaxNumber && (i % 2 == 0)) {evenMaxNumber = currentNumber;}
            if (currentNumber < oddMinNumber && (i % 2 != 0)) {oddMinNumber = currentNumber;}
            if (currentNumber < evenMinNumber && (i % 2 == 0)) {evenMinNumber = currentNumber;}
        }

        {System.out.printf("OddSum=%s%n", df.format(oddSum));}
            if (oddMinNumber == 1000000000.0) {System.out.println("OddMin=No");}
                else {System.out.println("OddMin=" + oddMinNumber + ",");}
            if (oddMaxNumber == -1000000000.0) {System.out.println("OddMax=No");}
                else {System.out.println("OddMax=" + oddMaxNumber + ",");}
        {System.out.println("EvenSum=" + evenSum + ",");}
            if (evenMinNumber == 1000000000.0) {System.out.println("EvenMin=No");}
            else {System.out.println("EvenMin=" + evenMinNumber + ",");}
            if (evenMaxNumber == -1000000000.0) {System.out.println("EvenMax=No");}
            else {System.out.println("EvenMax=" + evenMaxNumber + ",");}
        }
    }

0
mobretenova avatar mobretenova 1 Точки

Намерих начин.

0
TodorNikolov avatar TodorNikolov 12 Точки

Здравей,

Опитай да направиш форматирането използвайки:

DecimalFormat df = new DecimalFormat("0.#####");     като при принтирането на резултата използваш това:

System.out.printf("OddSum=%s", df.format(oddSum));

Спестил съм ти останалите променливи. Опитай и кажи, дали се получава :) При мен се получи!

0
igrilkul avatar igrilkul 0 Точки

Стана! Явно формата ги връщал като стринг резултата и оттам идвала грешката ми. Благодаря!

0
TodorNikolov avatar TodorNikolov 12 Точки

Радвам се, че помогнах!

0
tdk928 avatar tdk928 108 Точки

Здравей, задачата е кофти заради форматирането.Предлагам ти моето решение https://pastebin.com/XaFTQkty .Цаката на decimalformat e ,че закръгля толкова знака след запетаята колкото "#" имаш.В твоето решение ще закръгля само 1 знак и това не ти върши работа за judge.Също така те съветвам да кръщаваш променливите с по-описателни имена защото аз не разбрах какво е u/p.
П.С Понеже в Java double minValue/maxValue i 2-те са положителни числа не като една от по-предните задачи която е с int и там int maxvalue/minvalue са съответно + и - няколко милиарда може да използваш тях например double emax = Integer.MIN_VALUE/MAX_VALUE.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.