Софтуерно Инженерство
Loading...
+ Нов въпрос
chrisi2712 avatar chrisi2712 246 Точки

Здравейте, на ред 10 задавате всички стъпки да се подава от конзолата (int totalSteps = 0;), а всъщност трябва да са равни на 0. С тази поправка дава 100 от 100.

package Exercise1002;
 
import java.util.Scanner;
 
public class Exercise1002 {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        int totalSteps = 0;
 
        while (totalSteps < 10000) {
            String input = scanner.nextLine();
 
            if ( input.equals("Going home")){
                int bonusSteps = Integer.parseInt(scanner.nextLine());
                totalSteps += bonusSteps;
                break;
            }
 
            int steps = Integer.parseInt(input);
            totalSteps += steps;
        }
        if (totalSteps >= 10000){
            System.out.println("Goal reached! Good job!");
        }else{
            System.out.printf("%d more steps to reach goal.",10000 - totalSteps);
        }
    }
}

0
iliyantenev avatar iliyantenev 3 Точки

Мерси! Глупаво от моя страна!

0
Tspetrova avatar Tspetrova 65 Точки

Трбява да прекъснеш цикъла и когато стъпките са по-големи или равни на 10 000. Ето моето решение на Java :-) Успех

https://pastebin.com/ux4mKDdK

0
iliyantenev avatar iliyantenev 3 Точки

Мерси и за твоята помощ!

0
e_panova avatar e_panova 40 Точки

Здравей,

В началото (преди цикъла) totalSteps трябва да е равно на 0. После в цикъла получаваш стъпките и увеличаваш стойността на totalSteps.

Кодът ти само с тази промяна (totalSteps =0) дава 100 точки:

https://pastebin.com/u8pavHPc

 

0
iliyantenev avatar iliyantenev 3 Точки

Мерси!

1
damesova avatar damesova 95 Точки

Първоначално общо стъпките ти са = 0.

А ти започваш с парсване към инт на входа, който може да е команда, а не стъпки и да не може да се парсне. Какво правиш тогава? Помисли в тази посока. 

Вярвам, че хинта който ти давам е достатъчен. Успех!

 

 

0
iliyantenev avatar iliyantenev 3 Точки

Определено ми е трудно. Но мисля, че бавно започвам да разбирам.

Мерси за хинта!

0
damesova avatar damesova 95 Точки

Ами като някаква основа е важно да знаеш поне за блоковете код, които пишеш. Един блок може да бъде цикъл, или иф проверка. Между къдравите скоби се осъществява някаква логика, наречи го пресмятане или намиране на частично и пълно решение на даден проблем. Именно между тези {......} къдрави скоби залагаш и своите променливи, с които ще си извършиш операциите. Има област на видимост на тези променливи и това е важно, защото трябва да можеш да ги използваш. Ако искаш да използваш променлива в даден блок (от къдрави скоби :)))   ),  тя трябва да е зададена не по-навътре от този блок. В този смисъл е важно къде и с каква стойност си декларираш променливите, защото те ще биха могли да се зануляват в определен момент, но и биха променяли стойността си според заложената ти логика вътре.

В твоя случай: ПРеди while -а трябва да заложиш сумата на стъпките ти да е 0. Към нея ще добавяш при определени условия вътре в цикъла.

 

Друго, върху което е добре да помислиш е четенето от конзолата:

int totalSteps = Integer.parseInt(scanner.nextLine());

Сигурно ли е, че това, което прочетем от конзолата(входа) е число и може да се парсне?

Ако прочетем думичка, как ще я парсне?


П.С. Не се тревожи, всички сме и минаваме през такива неща.. Ще се справиш... Ако не - ще ти пуснем едно решение, но се помъчи..

 

0
iliyantenev avatar iliyantenev 3 Точки

Колегите вече пуснаха решения. Но колкото и да е странно обяснението ти малко ми помага. Нищо че е в стил Windows за идиоти.

Е, ако не се справя, значи няма да се справя и толкова.

0