Есть ли другой способ использовать это логическое значение в java 11? - PullRequest
0 голосов
/ 30 марта 2020

Итак, я изучал java в течение двух дней и получил сообщение об ошибке при компиляции этого кода ниже. То, что я пытался сделать, - это простая программа, которая получает имя из системного ввода и затем хочет узнать, является ли это имя, которым вы хотите go. Работал отлично. Поэтому я хотел изменить его: если это не желаемое имя, вы сможете набирать имя так часто, как хотите. Вот почему у меня есть логическое «подтверждение» там, а также пока l oop. При компиляции я получаю сообщение об ошибке «Значение локальной подтвержденной переменной не используется» для «подтвержденного» логического значения, хотя я его явно декларирую и использую. Я попытался просто переместить начальную декларацию, и она ничего не изменила. Кто-нибудь знает, как это исправить или повторно сделать мой l oop, чтобы не было никаких проблем?

Кстати, я использую VS Code с пакетом расширений Java.

import java.util.*;

public class Name{

public static void main(String[] args){

    Scanner sc = new Scanner(System.in);

    try{

    boolean confirmed = false;

    while(confirmed = false){
    System.out.println("What's your name again?");
    String enteredName = sc.nextLine();
    System.out.println("So, your name is " + enteredName + "?\nEnter 'yes' to confirm or 'no' to type a new name.");
    String confirmation = sc.nextLine();

    if(confirmation.equalsIgnoreCase("yes") || confirmation.equalsIgnoreCase("yes.")){
    System.out.println("Confirmed, " + enteredName + ".\n\nNow launching.");
    confirmed = true;
    }

    else if(confirmation.equalsIgnoreCase("no") || confirmation.equalsIgnoreCase("no.")){
    System.out.println("Please enter a new name.");
    confirmed = false;    
           }

        }

    }
    finally{
     sc.close();
    }
}

}

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Использование одного знака равенства - это задание, если вы хотите проверить, равно ли что-либо, используйте два знака равенства

// Sets value of confirmed to false then returns the new value
if (confirmed = false)

// Checks if confirmed is currently equal to false
if (confirmed == false)

// Checks if not confirmed (preferred syntax)
if (!confirmed)
0 голосов
/ 30 марта 2020

Вы не должны закрывать Scanner для System.in, поскольку оно также закрывает System.in. Помимо этого, вы можете упростить свой код следующим образом:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String confirmation, enteredName;
        do {
            System.out.print("What's your name again?");
            enteredName = sc.nextLine();
            System.out
                    .print("So, your name is " + enteredName + "?\nEnter 'yes' to confirm or 'no' to type a new name.");
            confirmation = sc.nextLine();
            if (confirmation.equalsIgnoreCase("yes") || confirmation.equalsIgnoreCase("yes.")) {
                System.out.println("Confirmed, " + enteredName + ".\n\nNow launching.");
            }
        } while (confirmation.equalsIgnoreCase("no") || confirmation.equalsIgnoreCase("no."));
    }
}

Пример выполнения:

What's your name again?Arvind
So, your name is Arvind?
Enter 'yes' to confirm or 'no' to type a new name.no
What's your name again?Kumar
So, your name is Kumar?
Enter 'yes' to confirm or 'no' to type a new name.no.
What's your name again?Avinash
So, your name is Avinash?
Enter 'yes' to confirm or 'no' to type a new name.yes
Confirmed, Avinash.

Now launching.
...