Java 制作接受姓名、小时数、工资率的并行阵列
因此,对于这个程序,我需要有三个数组来接受数据并显示工资总额,起初它似乎可以工作,但在输入第一个人的数据后,我的代码开始在窗口中堆叠起来,请帮助我解决这个问题以正常工作 我需要使用数组。对象是不允许的Java 制作接受姓名、小时数、工资率的并行阵列,java,arrays,Java,Arrays,因此,对于这个程序,我需要有三个数组来接受数据并显示工资总额,起初它似乎可以工作,但在输入第一个人的数据后,我的代码开始在窗口中堆叠起来,请帮助我解决这个问题以正常工作 我需要使用数组。对象是不允许的 import java.util.Scanner; public class ThreeArrays { public static void main(String args[]) { float[] payRate = new float[5]; f
import java.util.Scanner;
public class ThreeArrays {
public static void main(String args[]) {
float[] payRate = new float[5];
float[] hours = new float[5];
String[] name = new String[5];
getPayData(name, hours, payRate);
displayGrossPay(name, hours, payRate);
}
public static void getPayData(String[] name, float[] hours, float[] payRate) {
Scanner kb = new Scanner(System.in);
for (int i = 0; i < hours.length; i++) {
System.out.print("Enter the employee's name: ");
name[i] = kb.nextLine();
System.out.print("Enter the employee's hours: ");
hours[i] = kb.nextFloat();
System.out.print("Enter the employee's hourly rate: ");
payRate[i] = kb.nextFloat();
}
}
public static void displayGrossPay(String[] name, float[] hours, float[] payRate) {
for (int i = 0; i < hours.length; i++) {
System.out.println("Employee name: " + name[i] + " Gross Pay: " + hours[i] *
payRate[i]);
}
}
}
import java.util.Scanner;
公共类数组{
公共静态void main(字符串参数[]){
浮动[]工资率=新浮动[5];
浮动[]小时=新浮动[5];
字符串[]名称=新字符串[5];
getPayData(姓名、小时数、工资率);
displayGrossPay(姓名、工时、工资率);
}
公共静态void getPayData(字符串[]名称,浮动[]小时,浮动[]工资率){
扫描仪kb=新扫描仪(System.in);
对于(int i=0;i
PutSystem.out.println()代码>在您请求数据的每个语句之间
编辑:也可能是\n
字符未被.nextInt()
读取。要修复它,请放入kb.nextLine()
afterkb.nextFloat()代码>
for(int i=0;i
我已经把每个人都弄明白了
问题在于使用
System.out.print("Enter the employee's name: ");
name[i] = kb.nextLine();
我不得不把它改成
System.out.print("Enter the employee's name: ");
name[i] = kb.next();
问题与标准DIN冲洗有关。因为最后为行payRate[i]=kb.nextFloat()输入的浮点值代码>不删除\n
字符。此\n
字符是通过行名称[i]=kb.nextLine()获取的代码>在下一次迭代中。这进一步为行hours[i]=kb.nextFloat()留下一个String
值代码>。由于它不是有效的浮点值
,因此您将得到异常:java.util.InputMismatchException
要解决此问题,请使用lineif(i第行后payRate[i]=kb.nextFloat()代码>
下面是更正的代码。请参阅完整的工作代码:
公共类数组{
公共静态void main(字符串参数[]){
浮动[]工资率=新浮动[5];
浮动[]小时=新浮动[5];
字符串[]名称=新字符串[5];
getPayData(姓名、小时数、工资率);
displayGrossPay(姓名、工时、工资率);
}
公共静态void getPayData(字符串[]名称,浮动[]小时,浮动[]工资率){
扫描仪kb=新扫描仪(System.in);
对于(int i=0;i
清除缓冲区。“请不要告诉我使用对象,我的教学要求我使用数组”-你不需要对我们大喊大叫。--请看:还有。只是好奇,你是在什么样的环境(高中、大学、社区学院等)上这门课的?把System.out.print()
改为System.out.println()
EDIT:我现在明白你的问题了。只需在输入之间打印一个空行。不要清除问题。相反,投票选出有帮助的答案,并将解决问题的答案标记为已接受。它不起作用,仍然对第二位员工做同样的事情,并将他们的名字和姓氏放在一起
System.out.print("Enter the employee's name: ");
name[i] = kb.next();
public class ThreeArrays {
public static void main(String args[]) {
float[] payRate = new float[5];
float[] hours = new float[5];
String[] name = new String[5];
getPayData(name, hours, payRate);
displayGrossPay(name, hours, payRate);
}
public static void getPayData(String[] name, float[] hours, float[] payRate) {
Scanner kb = new Scanner(System.in);
for (int i = 0; i < hours.length; i++) {
System.out.print("Enter the employee's name: ");
name[i] = kb.nextLine();
System.out.print("Enter the employee's hours: ");
hours[i] = kb.nextFloat();
System.out.print("Enter the employee's hourly rate: ");
payRate[i] = kb.nextFloat();
if(i < hours.length-1) kb.next();
}
}
public static void displayGrossPay(String[] name, float[] hours, float[] payRate) {
for (int i = 0; i < hours.length; i++) {
System.out.println("Employee name: " + name[i] + " Gross Pay: " + (hours[i] *
payRate[i]));
}
}
}