Как не повторять другое утверждение - PullRequest
2 голосов
/ 08 мая 2020
public class array {
    public static void main(String[] args) {
        String names[] = {"John", "Mary", "Peter"};

        Scanner myScanner = new Scanner(System.in);
        System.out.print("Enter name: ");
        String nameEntered = myScanner.nextLine();


        for (int i = 0; i <= names.length; i++) {
            if (nameEntered.equals(names[i])) {
                System.out.println(names[i] + " is a common name.");
            } else {
                System.out.println(nameEntered + " is not a common name.");
            }
        }
    }
}

Как сделать так, чтобы инструкция else распечатывалась только один раз? Если я сделаю это так, на выходе будет nameEntered + «это не обычное имя». три раза. Это не может быть сломано; так как он будет печатать какие-то странные вещи при выполнении оператора if. Если я использую continue, он проверит все три, и результат будет похож на «Мэри - не обычное имя» «Мэри - обычное имя» «Мэри - не обычное имя», если я введу Мэри

Ответы [ 3 ]

2 голосов
/ 08 мая 2020

На основании вашего комментария я отредактировал ответ. Вы должны использовать флаг, как предложено в комментариях. См. Ниже -

import java.util.*;

public class HelloWorld{
    public static void main(String[] args) {
        String names[] = {"John", "Mary", "Peter"};

        Scanner myScanner = new Scanner(System.in);
        System.out.print("Enter name: ");
        String nameEntered = myScanner.nextLine();

        boolean nameFound = false;
        for (String name : names){
            if (nameEntered.equals(name)) 
                nameFound = true;            
        } 
        if(nameFound)
            System.out.println(nameEntered + " is a common name.");
        else
            System.out.println(nameEntered + " is not a common name.");
    }
}

См. Приложенный снимок экрана с выходными данными ниже -

enter image description here

Доступ к коду можно получить, выполнив по этой ссылке .

0 голосов
/ 08 мая 2020

Ну, вы могли бы вообще избежать l oop? (Только Java 8 и выше) Я не знаю точно, что вы искали, но для меня это естественно.

import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        String names[] = {"John", "Mary", "Peter"};

        Scanner myScanner = new Scanner(System.in);
        System.out.print("Enter name: ");
        String nameEntered = myScanner.nextLine();


        String result = Arrays.stream(names).
                                filter(nameEntered::equals).
                                findAny().
                                map(name -> name + " is a common name.").
                                orElseGet(() -> nameEntered + " is not a common name.");

        System.out.println(result);
    }
}

Example run

0 голосов
/ 08 мая 2020

вы можете использовать оператор continue или break.

public class array {
    public static void main(String[] args) {
        String names[] = {"John", "Mary", "Peter"};

        Scanner myScanner = new Scanner(System.in);
        System.out.print("Enter name: ");
        String nameEntered = myScanner.nextLine();


        for (int i = 0; i <= names.length; i++) {
            if (nameEntered.equals(names[i])) {
                System.out.println(names[i] + " is a common name.");
            } else {
                System.out.println(nameEntered + " is not a common name.");
                continue;
            }
        }
    }
}

...