Java 如何不重复else语句 公共类数组{ 公共静态void main(字符串[]args){ 字符串名[]={“约翰”、“玛丽”、“彼得”}; Scanner myScanner=新扫描仪(System.in); 系统输出打印(“输入名称:”); 字符串nameintered=myScanner.nextLine(); 对于(inti=0;i

Java 如何不重复else语句 公共类数组{ 公共静态void main(字符串[]args){ 字符串名[]={“约翰”、“玛丽”、“彼得”}; Scanner myScanner=新扫描仪(System.in); 系统输出打印(“输入名称:”); 字符串nameintered=myScanner.nextLine(); 对于(inti=0;i,java,arrays,for-loop,if-statement,Java,Arrays,For Loop,If Statement,您可以使用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

您可以使用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.");
            }
        }
    }
}
公共类数组{
公共静态void main(字符串[]args){
字符串名[]={“约翰”、“玛丽”、“彼得”};
Scanner myScanner=新扫描仪(System.in);
系统输出打印(“输入名称:”);
字符串nameintered=myScanner.nextLine();

对于(int i=0;i,根据您的评论,我已编辑了答案。您必须使用评论中建议的标志。请参阅下文-

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;
            }
        }
    }
}

请参阅下面附带的输出屏幕截图-


代码可以通过以下方式访问。

首先,您可以避免循环(但仅限于Java 8及以上版本) 我不知道你到底在找什么,但对我来说感觉很自然

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.");
    }
}

使用名为
found
的逻辑(布尔)变量,将其初始化为
false
。在循环中不打印任何内容,仅在名称匹配时设置
found
(之后可以
中断
)。根据
found
的不同,在循环后进行每次打印,但如何打印出与我输入的字符串匹配的find=true语句?找到匹配的字符串时,只需
break
。这会迫使您继续输入新名称,对吗?我只想输入一次名称,它会检查数组。更简单、更整洁!我尝试了此代码,但如果我输入了一个不常见的名称,它不会显示任何输出。很抱歉,您能解释一下(字符串名称:names)的作用和原因吗?以及为什么您不能使用典型的for循环。谢谢。
for(字符串名称:names)
是Java中一种简洁/增强的迭代方式。您完全可以用传统的
for
循环来代替它,即
for(int i=0;i
。请注意,问题中的
for
循环超出了范围。如果使用增强方式,则无需担心范围。无论如何,正如您所说,该代码有效,因此请接受并投票表决答案。
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);
    }
}