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
Put
System.out.println()在您请求数据的每个语句之间

编辑:也可能是
\n
字符未被
.nextInt()
读取。要修复它,请放入
kb.nextLine()
after
kb.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

要解决此问题,请使用line
if(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]));
        }
    }
}