Loading...
ValentinTyanov avatar ValentinTyanov 20 Точки

Nested Loops - 08. Fishing - JAVA

Здравейте, мъча се от доста време, но ми дава runtime еrror на някои от проверките и така и не разбирам защо...

Ето това  е кодът ми:

import java.util.Scanner;

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

        int fMax = Integer.parseInt(sc.nextLine());
        int fCaught = 0;
        double gain = 0;
        double loss = 0;
        String fName = sc.nextLine();

        while (!(fCaught == fMax || fName.equals("Stop"))) {
            double fishKg = Double.parseDouble(sc.nextLine());
            double worth = 0; //стойност на всяка риба
            fCaught++;

            for (int i = 0; i < fName.length(); i++) {
                double letWorth = 0;
                char currentLet = fName.charAt(i);
                letWorth = currentLet / fishKg; //стойност на буква, разделена на кг
                worth += letWorth;
            }

            if (fCaught % 3 == 0) {
                gain += worth;
            } else {
                loss += worth;
            }

            fName = sc.nextLine();
        }
        double diff = Math.abs(gain - loss);

        if (fMax == fCaught) {
            System.out.println("Lyubo fulfilled the quota!");
        }
        if (gain >= loss) {
            System.out.printf("Lyubo's profit from %d fishes is %.2f leva.", fCaught, diff);
        } else {
            System.out.printf("Lyubo lost %.2f leva today.", diff);
        }
    }
}

 

Много ще се радвам, ако някой успее да ми каже кое да коригирам  :)

0
Programming Basics with Java
skenderskiantonio avatar skenderskiantonio 36 Точки
Best Answer

 Здравей!

 Проблемът е, че ако хванатите риби са колкото максималният брой риби, ти все още искаш input в края на цикъла, а няма input. Ако добавиш

if (fMax==fCaught) break;
преди
fName = sc.nextLine();

тогава няма да имаш проблеми.  Проверката за изпълняване на цикъла за това дали максималният брой риби и хванатите риби е ненужен, когато добавиш този код.

0
ValentinTyanov avatar ValentinTyanov 20 Точки

Благодаря много!

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