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

Java-Basics While Loop - Exercise// 04. Walking

import java.util.Scanner;

public class Walking {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        int step = 0;
        while (step < 10000) {
            step += Integer.parseInt(input);
            input = scanner.nextLine();
            if (input.equals("Going home")) {
                input = scanner.nextLine();
                step += Integer.parseInt(input);
                break;
            }

        }
        if (step < 10000) {
            System.out.printf("%d more steps to reach goal.", 10000 - step);
        } else {
            System.out.printf("Goal reached! Good job!%n%d steps over the goal!", step - 10000);
        }
    }
}

 

В IJ излиза работи, но в Дждъджа nе :

Тест №1 (Грешка по време на изпълнение)

Тест №2 (Грешка по време на изпълнение)

Тест №3 (Грешка по време на изпълнение)

Тест №4 (Грешка по време на изпълнение)

Тест №5 (Грешка по време на изпълнение)

Тест №8 (Грешка по време на изпълнение)

Тест №9 (Грешка по време на изпълнение)

Предполагам че не му харесва 

if (input.equals("Going home")) {

input = scanner.nextLine();

step += Integer.parseInt(input);

break;

във цикъла, но не знам как да го направя по друг начин

"

4.Стъпки

Габи иска да започне здравословен начин на живот и си е поставила за цел да върви 10 000 стъпки всеки ден. Някои дни обаче е много уморена от работа и ще иска да се прибере преди да постигне целта си. Напишете програма, която чете от конзолата по колко стъпки изминава тя всеки път като излиза през деня и когато постигне целта си да се изписва "Goal reached! Good job!"  и колко стъпки повече е извървяла "{разликата между стъпките} steps over the goal!".

Ако иска да се прибере преди това, тя ще въведе командата "Going home" и ще въведе стъпките, които е извървяла докато се прибира. След което, ако не е успяла да постигне целта си, на конзолата трябва да се изпише: "{разликата между стъпките} more steps to reach goal."

Вход

Изход

Вход

Изход

1000

1500

2000

6500

 

Goal reached! Good job!

1000 steps over the goal!

1500

300

2500

3000

Going home

200

2500 more steps to reach goal.

Вход

Изход

Вход

Изход

1500

3000

250

1548

2000

Going home

2000

Goal reached! Good job!

298 steps over the goal!

125

250

4000

30

2678

4682

Goal reached! Good job!

1765 steps over the goal!

"

Тагове:
0
Programming Basics with Java
MartinBG avatar MartinBG 2769 Точки

Забеляавам следните проблеми в кода:

  • При първа команда "Going home" ще хвърли NumberFormatException 
  • При единствена команда 10000 (или повече) няма да спре, а ще чака още входни данни

Ето примерно решение, при което тези проблеми са избегнати:

import java.util.Scanner;

public class Walking {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        String input = null;
        int step = 0;
        while (step < 10000 && !"Going home".equals(input = scanner.nextLine())) {
            step += Integer.parseInt(input);
        }

        if ("Going home".equals(input)) {
            step += Integer.parseInt(scanner.nextLine());
        }

        if (step < 10000) {
            System.out.printf("%d more steps to reach goal.", 10000 - step);
        } else {
            System.out.printf("Goal reached! Good job!%n%d steps over the goal!", step - 10000);
        }
    }
}

 

0
subwaylistenss avatar subwaylistenss 0 Точки

With the aphorism, We Listen and We Care, Subway authorities direct a review to get certifiable input from the clients. https://globalsubwaylistenss.com TellSubway Survey gives the best open door for clients to get free Cookie or Small wellspring drink at your following visit.

0