2

入力が配列の要素と一致する行全体を印刷する方法は? 私のコードのどこが間違っていたのか見てください... :(

package scanner;
import java.util.Arrays;
import java.util.Scanner;

public class EmployeeInformation {

    static Scanner sc = new Scanner(System.in);

    static String info[][] = {{"09-001", "Ja Gb", "100", "10", },
                        {"09-002", "Justine", "200", "20", ""},
                        {"09-003", "Ja Ja", "150", "15", ""}};

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.print("     - MENU -\n");
        System.out.print("A. Search Record\nB. Payroll Summary\n------------------\nEnter choice: ");
        String choice = null;
        choice = sc.nextLine();


        if (choice.equalsIgnoreCase("a")) {
            System.out.print("Enter Employee #: ");
            String EmpNum = sc.nextLine();
            SearchRecord(EmpNum);
        }
        else {
                PayrollSummary();
            }
    }

    private static void SearchRecord(String employeeNumber) {
        // TODO Auto-generated method stub
        String row[] = new String[3];
        int i = 0;
        while(i <= info.length) {
            int j = 0;
            while(j <= info.length) {
                if(employeeNumber.equals(info[i][j])) {
                    for (int a = 0; a <= row.length; a++) {
                        row[a] = info[i][j];
                        System.out.print(row[a]);
                        a++;
                    }
                }
                else {
                    System.out.print("Invalid employee number.");
                    System.exit(0);
                }
                j++;
            }
            i++;
        }
    }

    private static void PayrollSummary() {

        System.out.println("Employee #:\tEmployee Name\tRate per Hour\tTotal Hours Worked\tGross Pay");
        int r = 0;
        while ( r <= info.length - 1) {
            int c = 0;
            while ( c <= info.length ) {
                System.out.print(info[r][c] + "\t\t");
                if (c == 3) {
                System.out.print("\n");
                }
                c++;
            }
            r++;
        }



        //for (int a = 0; a <= info.length -1; a++) {
        //      Integer.parseInt(info[a][4]) = Integer.parseInt((info[a][3]) *  (info[a][4]));

        //}
    }
}

入力が要素と一致する場合はどうすればよいですか? ヒントをください

4

2 に答える 2

1

2次元配列の最初の要素として常に従業員番号を持っているようです。その場合、ネストされたループはまったく必要ありません。

String[] matchedRow;
for(int i=0; i<info.length; i++)
{
    String[] oneRow = info[i];
    if(oneRow[0].equals(employeeNumber))
    {
        matchedRow = oneRow;
        break
    }
}

for(int i=0; i<matchedRow.length; i++)
{
    System.out.println(matchedRow[i]);
}

とはいえ、実生活では、従業員レコードがあなたのような配列になっていることはめったにありません。Employeeクラスを作成し、Listオブジェクトの を持っていEmployeeます。、およびEmployeeの正しい実装を使用してクラスが正しく設計されている場合、match メソッドは次のように単純になります。equalshashCodetoString

employee = employeeList.get(employeeList.indexOf(employee));
System.out.println(employee);
//Do whatever with employee
于 2012-10-09T18:26:22.987 に答える
0

これを試して :

class Employee {

     static String info[][] = {{"09-001", "Ja Gb", "100", "10", },
            {"09-002", "Justine", "200", "20", ""},
            {"09-003", "Ja Ja", "150", "15", ""}};


     private static void search(String employeeNumber) {


        for (String s[] : info ) {
            if(employeeNumber.equals(s[0])) {
                for (String row : s) {
                    System.out.println (row) ; 
                }
                return ;
            }       
        }

        System.out.println ("Nothing found") ; 

    }

    public static void main(String args[]) {
        search ("09-003");
    }//end of main


}
于 2012-10-09T18:44:40.790 に答える