Java:从用户输入获取一个字符串并将其存储在数组中,对应一个整数。案例:员工姓名和身份证明

时间:2016-11-24 08:59:11

标签: java arrays terminal

我正在研究Java中的一个问题,该问题会询问用户的ID和员工的姓氏,并将每个响应存储到一个阵列中,比如20名员工。它不必存储在一个数组中,数组可以分开,如同一个用于员工ID,一个用于姓氏,但我必须能够在终端中整齐地打印它们。

我在下面的代码是一个非常简单的想法,将程序呈现给用户的方式。它只是要求"输入员工的ID和姓氏。"之后输入数字,空格,然后输入姓氏。我可以使用" nextLine()。trim()"但我似乎无法将字符串存储到数组中。

    // IntStringSplit.java

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


public class IntStringSplit {

    public static void main( String[] args ) {

    Scanner input = new Scanner( System.in );

    String[] empName = new String[4];
    int[] empNum = new int[4];

    System.out.println( "Enter the ID and name: ");
    for( int counter = 0; counter <= 4; counter++ ) {
    int i = input.nextInt();
    String s = input.nextLine().trim();
    Arrays.fill( empNum, i );
    Arrays.fill( empName, s );
    }

    for( int i2 : empNum )
        System.out.printf( "The numbers are: %d%n", i2 );

    for( str s2 : empName )
        System.out.printf( "The names are: %s%n", s2 );
    System.out.println();

    }
}

3 个答案:

答案 0 :(得分:2)

请参阅我建议的更正如下:

  • Array.fill()用一个值填充整个数组。使用arrayName[index] = value;语法一次添加一个值。

  • 确保计数器在达到阵列长度之前停止。最后一个索引是数组长度 - 1.在您的情况下小于4或小于或等于3。 (不过最好使用arrayName.length而不是数字。)

    // IntStringSplit.java
    
    import java.util.Scanner; import java.util.Arrays;
    
    
    public class IntStringSplit {
    
        public static void main( String[] args ) {
    
            Scanner input = new Scanner( System.in );
    
            String[] empName = new String[4];
            int[] empNum = new int[4];
    
            System.out.println( "Enter the ID and name: ");
    
            for( int counter = 0; counter < 4; counter++ ) {
                int i = input.nextInt();
                String s = input.nextLine().trim();
                empNum[counter] = i;
                empName[counter] = s;
            }
    
            for( int i2 : empNum )
                System.out.printf( "The numbers are: %d%n", i2 );
    
            for( str s2 : empName )
                System.out.printf( "The names are: %s%n", s2 );
    
            System.out.println();
        }
    }
    

答案 1 :(得分:2)

for( str s2 : empName )错误,请使用

而是{p> for( String s2 : empName )。此外,数组不是存储此类数据的理想方式,因为长度是固定的,并且只能包含值。您可以改用hasmap。它将密钥(id)连接到值(姓氏)。

HashMap<Integer, String> map = new HashMap<Integer, String>;
map.put(id, lastName);

答案 2 :(得分:0)

这是我编写的用于从用户获取输入并在获取输入后检索数据的类。

输入需要采用以下格式: 输入员工编号,然后输入姓氏: 23 abc

输入员工编号,后跟姓氏: 21 bfs

输入员工编号,后跟姓氏: 34 fs

输入员工编号,后跟姓氏: 23无花果

输入员工编号,后跟姓氏: 23 78

结果如下: 雇主号码是:23姓氏是:abc

雇主编号是:21姓氏是:bfs

雇主编号是:34姓氏是:fs

雇主编号是:23姓氏是:fig

雇主编号是:23姓氏是:78

代码:

    package com.test;

    import java.util.Scanner;
    import java.util.ArrayList;



    public class IntStringSplit {

    public static void main( String[] args ) {
    int numberOfLoops= 5;
    Scanner scanner = new Scanner(System.in);
    ArrayList<Employee> myArray = new ArrayList<Employee>();
    int counter=0;
    while(counter<numberOfLoops){
    System.out.println("Enter the Employee Number followed by Last name: ");

    String employeDetails = scanner.nextLine();
    String[] splited = employeDetails.split("\\s+");
    Employee emp = new Employee();
    emp.setNumber(Integer.parseInt(splited[0]));
    emp.setLastName(splited[1]);
    myArray.add(emp);
    counter++;

    }
    scanner.close();

   for(Employee emp: myArray){
  System.out.println("Employer Number is: "+emp.getNumber() + " Last Name is: " + emp.getLastName());
  }

   }

  static class Employee {
    Integer empNumber;
    String lastName;
    public int getNumber() {
        return empNumber;
    }
    public void setNumber(Integer empNumber) {
        this.empNumber = empNumber;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    }
  }