Застрял в то время как петля (Java) - PullRequest
0 голосов
/ 05 ноября 2019

все! Я студент-первокурсник по специальности «Информатика», проходящий курс программированияВыполняя домашнее задание, я застрял в определенной части своего кода. Пожалуйста, будьте добры, так как это мой первый семестр, и мы занимаемся Java только 3 недели.

Для контекста, мое задание таково: «Создать программу, которая попросит пользователя ввести свое имя ивведите количество пройденных им шагов за день. Затем спросите их, хотят ли они продолжить. Если ответ «да», попросите их ввести еще одно количество пройденных шагов. Спросите их еще раз, хотят ли они продолжить. кроме «да», вы должны завершить программу, сказав им «до свидания, [ИМЯ]» и сумму количества шагов, которые они совершили. пока цикл до конца. Это игнорирует условие, которое я (возможно, неправильно) установил.

Не могли бы вы мне помочь и скажите, что я делаю неправильно?

import java.util.Scanner;

public class StepCounter 
{

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) 
    {
        final String SENTINEL = "No";

        String userName = "";
        String moreNum = "";
        int numStep = 0;
        int totalStep = 0;
        boolean done = false;
        Scanner in = new Scanner(System.in);
        Scanner in2 = new Scanner(System.in);

        // Prompt for the user's name
        System.out.print("Please enter your name: ");
        userName = in.nextLine();

        while(!done)
        {
            // Prompt for the number of steps taken
            System.out.print("Please enter the number of steps you have taken: ");
            // Read the value for the number of steps
            numStep = in.nextInt();
            // Prompt the user if they want to continue
            System.out.print("Would you like to continue? Type Yes/No: ");
            // Read if they want to continue
            moreNum = in2.nextLine();
            // Check for the Sentinel
            if(moreNum != SENTINEL)
            {
                // add the running total of steps to the new value of steps
                totalStep += numStep;
            }
            else
            {
                done = true;
                // display results
                System.out.println("Goodbye, " + userName + ". The total number of steps you entered is + " + totalStep + ".");
            }
        }
    }

}

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Для сравнения содержимого объектов String необходимо использовать функцию CompareTo.

moreNum.compareTo (SENTINEL) возвращает 0, если они равны.

== оператор используется для проверки, являются ли ониссылаются на один и тот же объект или нет.

еще одна проблема с добавлением шагов, добавление должно быть сделано в случае, если введено также «Нет»

0 голосов
/ 05 ноября 2019

Используйте

if(!moreNum.equals(SENTINEL))

Вместо

if(moreNum != SENTINEL)

Кроме того, обязательно добавьте: totalStep += numStep; в ваш оператор else, чтобы ваша программа фактически добавила шаги вместе.

...