我正在研究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();
}
}
答案 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 )
错误,请使用
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;
}
}
}