有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过索引“Java”彼此相等的两个数组

如果用户在运行此程序后键入自己的姓名,则程序应输出

Hello Sully you are Manager !

但实际情况是,程序将打印Sully是管理者,并将继续将Sully与数组中的其他值进行比较。我只是在用java学习数组

    public class Aconstructors {

        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in) ;
            String user ;
            String [] empName , empPos ;
            empName = new String [2] ;
            empName [0] = "Sully" ;
            empName [1] = "John" ;
            empPos = new String [2] ;
            empPos [0] = "Manager" ;
            empPos [1] = "Employ" ;

            System.out.println("Enter Your Name to know Your Position : ");
            user = scan.nextLine()  ;

            for (int i = 0 ; i <empName.length;i++ ) {
                //check if user input is equals
                if (empName[i].equals(user)) {
                    // indexes are equals
                    empName.equals(empPos.length );
                    System.out.printf("Hello %s you are %s !!\n",empName[i],empPos[i]);
                    // if user input is not equal
                }
                else if   (!empName[i].equals(user))  {
                    System.out.println("unknowing user !! ");
                }
            }
        }
    }

John的输出:

Enter Your Name to know Your Position : 
John
unknowing user !! << as you see here java checking the values 
Hello John you are the Employ  !! << java found John 

Sully的输出:

Enter Your Name to know Your Position : 
Sully
Hello Sully you are Manager !! << found Sully 
unknowing user !! << didnt stop  

共 (2) 个答案

  1. # 1 楼答案

    在循环之前声明一个布尔变量unknown=true;,以检查列表中是否存在该名称。如果在列表中找到该名称,请更改unknown=false;
    循环完成后,如果变量未更改,即名称不在列表中,则打印消息“未知”

    Scanner scan = new Scanner(System.in) ;
    String user ;
    String [] empName , empPos ;
    empName = new String [2] ;
    empName [0] = "Sully" ;
    empName [1] = "John" ;
    empPos = new String [2] ;
    empPos [0] = "Manager" ;
    empPos [1] = "Employ" ;
    
    System.out.println("Enter Your Name to know Your Position : ");
    user = scan.nextLine()  ;
    
    boolean unknown = true;
    
    for (int i = 0 ; i <empName.length;i++ ) {
        //check if user input is equals
        if (empName[i].equals(user)) {
            unknown = false;
            System.out.printf("Hello %s you are %s !!\n",empName[i], empPos[i]);
            break;
        }
    }
    
    if (unknown)
        System.out.println("unknowing user !! ");
    
  2. # 2 楼答案

    尝试改进您的for-loop-like

    for (int i = 0 ; i <empName.length;i++ ) {
                //check if user input is equals
                if (empName[i].equals(user)) {
                    // indexes are equals 
                    System.out.printf("Hello "+empName[i]+" you are "+empPos[i]);
                    break;
                    // if user input is not equal
                } else if   (!empName[i].equals(user))  {
                    System.out.println("unknowing user !! ");
                }
            }
    

    您只需要将您的用户输入与empName数组进行比较,并打印该员工的位置,这非常简单,因为您的索引对于这两者都是相同的,如果找到匹配项,则使用break来中断循环