Java 我的程序正在做一些奇怪的事情

Java 我的程序正在做一些奇怪的事情,java,eclipse,Java,Eclipse,这是我的任务目标: 假设所有员工的每周工作时间都存储在 二维阵列。每行记录一名员工的n天工作时间 有n列,其中n≥ 1和n≤ 7表示天数 在一周内,这些员工工作。例如,所示的表格 下面表示一个数组,该数组存储8小时的工作时间 一周工作7天。编写一个程序,将 输入、员工人数和工作日数 周然后它接收所有员工信息(姓名和号码) 每日工作小时数)。该程序应显示员工和 他们一周工作的总小时数按总小时数的降序排列 时间 输出应如下所示: Employee 7 worked 39 hours Employee

这是我的任务目标:

假设所有员工的每周工作时间都存储在 二维阵列。每行记录一名员工的n天工作时间 有n列,其中n≥ 1和n≤ 7表示天数 在一周内,这些员工工作。例如,所示的表格 下面表示一个数组,该数组存储8小时的工作时间 一周工作7天。编写一个程序,将 输入、员工人数和工作日数 周然后它接收所有员工信息(姓名和号码) 每日工作小时数)。该程序应显示员工和 他们一周工作的总小时数按总小时数的降序排列 时间

输出应如下所示:

Employee 7 worked 39 hours
Employee 6 worked 37 hours
Employee 0 worked 34 hours
Employee 4 worked 32 hours
Employee 3 worked 31 hours
Employee 1 worked 28 hours
Employee 5 worked 28 hours
Employee 2 worked 24 hours
此外,输出应按工作时间最多到工作时间最少的降序排列

我的代码很奇怪,在我的输出中给我“null”,它也不会显示每个员工在我把他们放进去后工作了多少小时

这是我的密码:

package assignment3TL;

import java.util.*;

public class EmployeeWorkHours {

    public static void main(String[] args) {

        Scanner turtle = new Scanner(System.in);
        String[] calender = {"S", "M", "T", "W", "Th", "F", "S"};
        System.out.println("How many Employee's do you have?: ");
        int NUMBER_OF_EMPLOYEES = turtle.nextInt();
        turtle.nextLine();
        int[][] hours;
        hours = new int[NUMBER_OF_EMPLOYEES][7];
        String[][] employee = new String[NUMBER_OF_EMPLOYEES][2];

        // input for Names
        for (int x = 0; x < (employee.length); x++) {
            System.out.println("Name of Employee " + (x + 1) + ": ");
            String name = turtle.nextLine();
            employee[x][1] = name;

        }
        // input for Hours
        for (int z = 0; z < hours.length; z++) {
            System.out.println("Starting from Sunday, enter the hours Employee " + (z + 1) + " has worked each day (Make sure you seperate it by spaces): ");
            for (int a = 0; a < (hours[0].length); a++) {
                hours[z][a] = turtle.nextInt();
            }
        }
        // Print everything out
        for (int i = 0; i < employee.length; i++) {
            for (int z = 0; z < employee[0].length; z++) {
                System.out.println(employee[i][z] + "-");
            }
            for (int f = 0; f < NUMBER_OF_EMPLOYEES; f++) {

                System.out.println(" " + hours[i][f]);

            }
        }
        // Total hours.
        for (int s = 0; s < hours[0].length; s++) {
            int counter = 0;
            for (int d = 0; d < hours.length; d++) {
                hours[d][s] += counter;
            }
            System.out.println("Employee " + (s + 1) + " worked " + counter + "   hours.");
        }

    }

}
包分配3tl;
导入java.util.*;
公共类员工工作时间{
公共静态void main(字符串[]args){
扫描器海龟=新扫描器(System.in);
字符串[]日历={“S”、“M”、“T”、“W”、“Th”、“F”、“S”};
System.out.println(“您有多少员工?:”;
int NUMBER_OF_EMPLOYEES=turtle.nextInt();
海龟。下一行();
整数[][]小时;
小时数=新整数[员工人数][7];
字符串[][]员工=新字符串[员工人数][2];
//输入名称
对于(int x=0;x<(employee.length);x++){
System.out.println(“员工姓名”+(x+1)+“:”;
字符串名称=turtle.nextLine();
员工[x][1]=姓名;
}
//输入小时数
对于(intz=0;z
您当前的代码有多处错误。除了捕获
nextline
和员工的二维数组问题之外,打印所需输出的整个逻辑都是错误的。此外,for循环条件完全错误,无法获得所需的输出。所以这个程序没有做任何奇怪的事情——你只是把它编错了

您应该尝试以下更新的代码:

      Scanner turtle = new Scanner(System.in);
      String[] calender = { "S", "M", "T", "W", "Th", "F", "S" };
      System.out.println("How many Employee's do you have?: ");
      int NUMBER_OF_EMPLOYEES = turtle.nextInt();
      turtle.nextLine();

      int [][]hours;
      int []totalHours= new int[NUMBER_OF_EMPLOYEES];

      hours = new int[NUMBER_OF_EMPLOYEES][7];
      String[] employee = new String[NUMBER_OF_EMPLOYEES];

      // input for Names
      for (int x = 0; x < (employee.length); x++) {
          System.out.println("Name of Employee " + (x + 1) + ": ");
          String name = turtle.nextLine();
          employee[x] = name;

      }
      // input for Hours
      for (int z = 0; z < employee.length; z++) {
          System.out.println("Starting from Sunday, enter the hours Employee "+ (z + 1)+ " has worked each day (Make sure you seperate it by spaces): ");
          for (int a = 0; a < 7; a++) {
              hours[z][a] = turtle.nextInt();
          }
          turtle.nextLine();
     }
      // Print everything out
      for (int i = 0; i < employee.length; i++) {
          totalHours[i]=0;
          for(int j=0; j<7; j ++){
              totalHours[i] = totalHours[i]+hours[i][j];   
          }

        System.out.println("Employee " + (i + 1) +" worked " + totalHours[i] + " hours");  

      }
Scanner-turtle=新的扫描仪(System.in);
字符串[]日历={“S”、“M”、“T”、“W”、“Th”、“F”、“S”};
System.out.println(“您有多少员工?:”;
int NUMBER_OF_EMPLOYEES=turtle.nextInt();
海龟。下一行();
整数[][]小时;
int[]总小时数=新int[员工人数];
小时数=新整数[员工人数][7];
String[]employee=新字符串[员工人数];
//输入名称
对于(int x=0;x<(employee.length);x++){
System.out.println(“员工姓名”+(x+1)+“:”;
字符串名称=turtle.nextLine();
员工[x]=姓名;
}
//输入小时数
对于(intz=0;z对于(int j=0;j我还需要在哪里清除换行符?我尝试在int NUMBER_OF_EMPLOYEES=turtle.nextLine()之后在第12行清除turtle.nextLine;但是当我运行它的时候,这给了我一个错误…所以我稍微仔细看了一下…那
nextLine
在这里对你没有任何用处。这里有很多事情出错了,但我想问你的问题是,当你只使用
employee
的一个维度时,为什么你需要为它使用二维数组呢我怎样才能用二维数组而不是一个数组来实现它呢?“我的程序正在做一些奇怪的事情”-可能是发布到问答网站上最糟糕的非问题…我的意思是,无论如何,这不是一个问题;这个标题没有给出任何上下文或有用的信息…-1直到修复。哇。我讨厌这些小事情之后变得如此有意义…非常感谢。你有什么办法让输出按降序排列吗?@tylorton2 not sure你在问什么?我的程序在最后显示每个员工的总工作小时数时,还应按降序列出员工的总工作小时数,这意味着最先列出的工作小时数最多的员工,最后列出的工作小时数最少的员工。@tylorton2我建议你使用
totalHours