当前位置: 首页 > 知识库问答 >
问题:

如何打印两个不同的数据类型数组?

何涵衍
2023-03-14

有人能帮忙吗?选择2不起作用。当用户输入员工姓名时,它应该显示员工ID,但当用户输入姓名时,不会打印任何内容。代码没有错误。

public static void main(String[] args) {
int[] emplID={ 42577, 38611, 32051, 28627, 42061, 79451 };//employee ID
int ID = employeeID(emplID);
String[] emplNames= { "Bruce Wayne", "Barry Allen", "Hal Jordan", "Dinah Lance", "Oliver Queen", "Tineil Charles" };// Employee Names
search(emplNames, emplID);
//methods called from main


}

public static int employeeID(int [] emplID) {
    //check ID length
    for(int i=0; i< emplID.length; i++) {
        if((emplID[i] > 10000)&&(emplID[i] < 99999)) {
        System.out.print(emplID[i] + " - Valid ID length\n");

        }
        else {
            System.out.println(emplID[i] + " - Invalid ID! ID must be Five digits!\n");

        }//end of check length

        //check if ID is prime
         boolean isPrime = true;
            for (int j = 2; j < emplID[i]; j++) {
                if (emplID[i] % j == 0) {
                    System.out.println(emplID[i] + " - not prime");
                    isPrime = false;
                    break;
                } 
            }
            if(isPrime) System.out.println(emplID[i] + " - valid prime");//end of check prime
        }//end of employeeID method
    return 0;

}// end of ID checker

//搜索员工数据公共静态无效搜索(string[]emplNames,int[]emplid){

        Scanner scan= new Scanner(System.in);
        //Menu Choice
        System.out.println("Please choose 1 to enter Employee ID or 2 to enter Employee Name:" );           

        int num = scan.nextInt();//input choice

        // Choice 1 to enter ID to display name
            if (num == 1) {
            System.out.println("Please enter Employee ID:");
            int searchID= scan.nextInt();
            for(int ID = 0; ID < emplID.length; ID++) {
            if (searchID == (emplID[ID])){
            System.out.println("Name: "+ emplNames[ID]);
        }
    }
            }
        // Choice 2 to enter name to display ID
            else if(num == 2) {
            System.out.println("Please enter Employee Name");
            String searchName= scan.next();
            for(int ID = 0; ID< emplID.length; ID++){
            if ((searchName.equals(emplNames[ID]))){
            System.out.println("ID: " + emplID[ID]);
            }
            }
            }   
            else 
                System.out.println("Employee Not Found");
}
}

共有1个答案

方夜洛
2023-03-14

我复制粘贴了你的代码并在我的机器上运行。是的,选择2对我也不起作用。

在完全阅读代码之前,我的直觉是,失败的原因是使用Scanner类获取员工的姓名。我过去也遇到过类似的问题,最好的办法是学习使用InputStreamReader和BufferedStreamReader对象。

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

1:我没有对你的主()做任何事

public static void main(String[] args) {
    int[] emplID={ 42577, 38611, 32051, 28627, 42061, 79451 };//employee ID
    int ID = employeeID(emplID);
    String[] emplNames= { "Bruce Wayne", "Barry Allen", "Hal Jordan", "Dinah Lance", "Oliver Queen", "Tineil Charles" };// Employee Names
    search(emplNames, emplID);
}
public static int employeeID(int [] emplID) {
    //check ID length
    for(int i=0; i< emplID.length; i++) {
        if((emplID[i] > 10000)&&(emplID[i] < 99999)) {
            System.out.print(emplID[i] + " - Valid ID length\n");

        }
        else {
            System.out.println(emplID[i] + " - Invalid ID! ID must be Five digits!\n");

        }//end of check length

        //check if ID is prime
        boolean isPrime = true;
        for (int j = 2; j < emplID[i]; j++) {
            if (emplID[i] % j == 0) {
                System.out.println(emplID[i] + " - not prime");
                isPrime = false;
                break;
            }
        }
        if(isPrime) System.out.println(emplID[i] + " - valid prime");//end of check prime
    }//end of employeeID method
    return 0;

}// end of ID checker
public static void search(String[] emplNames, int[]emplID) {
    InputStreamReader in = new InputStreamReader(System.in);
    BufferedReader buff = new BufferedReader(in);

    //Menu Choice
    System.out.println("Please choose 1 to enter Employee ID or 2 to enter Employee Name:" );
    int num = 0;
    try {
        num = Integer.parseInt(buff.readLine());
    } catch (Exception e) {
        e.printStackTrace();
    }
    // Choice 1 to enter ID to display name
    if (num == 1) {
        System.out.println("Please enter Employee ID:");
        int searchID = 0;
        try {
            searchID = buff.read();
        } catch (Exception e) {
            e.printStackTrace();
        }

        for (int i : emplID) {
            if (searchID == i) {
                System.out.println("Name: " + emplNames[i]);
            }
        }
    } else if (num == 2) {
        System.out.println("Please enter Employee Name");
        String searchName = "";
        try {
            searchName = buff.readLine();
        } catch(Exception e) {
            e.printStackTrace();
        }

        for(int ID = 0; ID< emplID.length; ID++){
            if ((searchName.equals(emplNames[ID]))){
                System.out.println("ID: " + emplID[ID]);
            }
        }
    } else {
        System.out.println("Employee Not Found");
    }
  }
}

我希望这对你有帮助。

 类似资料:
  • 这里有两个数据帧: 预期数据帧: 以及实际数据帧: 现在两个数据帧之间的区别是: 我们使用的是except函数df1.except(df2),但问题是,它返回的是不同的整行。我们希望看到该行中哪些列不同(在本例中,“romin”和“romino”与“emp_name”不同)。我们在这方面遇到了巨大的困难,任何帮助都会很好。

  • 我有两个2D数组,都是3x3。 或者更多地澄清一下我想做什么: 所以第一行是: 并对每一行进行相应的处理。

  • 问题内容: 我正在用Java处理数组,但有一个问题。我知道Java中的数组是类似数据类型的集合,如下所示: 上面的声明可以作为一个数组读取,该数组是整数类型的集合。 考虑一下: 在这里,我可以说上面的是一个数组,它是不同数据类型的集合,还是它是相似数据类型(即对象)的数组? 我对此感到困惑和怀疑。在Java中,是否可以创建可以容纳不同数据类型的数组或任何种类的集合? 问题答案: Java中的所有对

  • 我现在的代码: 我希望它打印两个数组的交集,而不需要再次打印相同的数字。 E、 g:code>[1,2,2,1]和的交点应该只打印一次,而不是像我现在的代码那样。

  • 问题内容: 我正在尝试编写一个小程序,该程序在数组中打印出不同的数字。例如,如果用户输入1,1,3,5,7,4,3,则该程序将仅打印出1,3,5,7,4。 我在else if函数中遇到错误。 到目前为止,这是我的代码: 问题答案: 首先,“ ”语句是不正确的,因为您没有为if提供任何条件(如果需要if,则需要编写“ ”)。 其次,您不能 在内部 循环中决定是否应打印一个值:代码的工作方式是 为每个

  • 我有两个数据源A和B。我有两个数据集'A'和'B'分别来自它们。 谢谢你的帮助!