Loading...
VasilK avatar VasilK 40 Точки

5. Walking

Може ли някой да ми обясни защо получавам 0 /100 при условие че всички тестове във файла със задачите за верни.

Получавам грешка Runtime error.

import java.util.Scanner;

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


        int goal = 10000;
        int sum = 0;

        while (true) {

            String steps = scanner.nextLine();

            if (!"".equals(steps)) {

                if (!"Going home".equals(steps)) {
                    int num = Integer.parseInt(steps);
                    sum += num;
                } else {
                    sum += 0;
                }
            } else {
                break;
            }

        }

        if (sum >= goal) {
            System.out.println("Goal reached! Good job!");
        } else {
            System.out.printf("%d more steps to reach goal.", (int) (goal - sum) );
        }
    }
}
Тагове:
0
Programming Basics with Java
Quake3 avatar Quake3 546 Точки
Best Answer

Здравей,

Тестовете ти минават заради: if (!"".equals(steps)) {..}

Забележи, че след като въведеш необходимия вход, се налага да натиснеш 2 пъти "Enter".

Пробвай с вход, който съдържа символи на последния ред, примерно:

1500
300
2500
3000
Going home
200
k

Огледай разликите с преправения код.

0
VasilK avatar VasilK 40 Точки

Забелязах това поведение и точно в тази посока започнах да дълбая.

На какво се дължи това поведение. Обяснявам си го че скенера не е празен просто не съдържа стойност. Blank vs Null?

От където се чете input всичко след 200 е blank?

 

Да разбирам ли че continue прави още една итерация?

1500

300

2500

100

Going home

200

15000

този тест връщя още 5400 крачки .

Разбрах какво се случва. прави една итерация защото lastStep вече е усвоила стойност true, иначе continue ще ни връща в началото на цикъла докато това не се случи.

1
10/10/2018 17:25:19
Quake3 avatar Quake3 546 Точки

Да, така е за continue, просто пропуска тази итерация и продължава със следващата, но понеже lastStep вече е истина, излиза от цикъла.

а защо така се държи - виж входовете:

  1. 1000
  2. 1500
  3. 2000
  4. 6500
  5.  

Следващият е:

  1. 1500
  2. 300
  3. 2500
  4. 3000
  5. Going home
  6. 200
  7.  

Има един празен ред в края на всеки от 4-те нулеви теста. 

0
dnikolova327 avatar dnikolova327 4 Точки

Това е моето решение,минава тестовете в judge :) https://pastebin.com/8iiMe9QB

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