0

我被要求编写一个程序来输入员工的身份证号、上班时间和下班时间。数据将写入 .txt 文件中。我知道我应该使用 FileWriter 但我可以问是否可以标记信息?我想让我的 .txt 文件是这样的:

Name     Time in     Time out     Total hours worked     Salary
Name1    08:00       05:00        9                      4000
Name2    09:00       04:00        7                      3000

另外,我将如何计算 12 小时内的总工作时间?这是我的源代码:

import java.util.Scanner;
import java.io.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

class AYANYAN
{static String ans ;
static int empNumber ;
static String timeIn, timeOut;
static Scanner s = new Scanner(System.in);
static String name[] = { "Ayan Ramirez", "Jenifer Sumbi", "Gen Estrada" , "Tugba Cakir", "Lennox Schatje Huisden"};


public static void main(String args[])throws IOException
{
    FileWriter fWriter = new FileWriter("EmpData.txt");
    for (int i = 0; i < name.length; i++)
    {
        fWriter.write(name[i] + "\n");
    }
    fWriter.close();

    start () ;

}

public static void control ()
{
    System.out.print ("\n\nPlease select one of the following: \nA. Sign Off\nB. Enter Time in\nC. Enter Time out\nD. Exit Program\n") ;
    ans = s.next() ;

    if (ans.equalsIgnoreCase("A")){
        signOff () ;
    } else if (ans.equalsIgnoreCase("B")) {
        timeIn () ;
    } else if (ans.equalsIgnoreCase("C")) {
        timeOut () ;
    } else if (ans.equalsIgnoreCase("D")){
        System.out.print ("\nBYE!\n\n\nProgram made by: Ayan Ramirez\n") ;
    } else {
        System.out.print ("ERROR!") ;
        System.exit(0);
    }
}

public static void start ()
{
    System.out.print ("Please enter your id number: ") ;
        empNumber = s.nextInt();

        if (empNumber == 12345){
        System.out.print ("\nSigned in as: " + name[0]);
        control() ;

        } else if (empNumber == 12346){
        System.out.print ("\nSigned in as: " + name[1]);
        control() ;

        }else if (empNumber == 12347){
        System.out.print ("\nSigned in as: " + name[2]);
        control() ;

        }else if (empNumber == 12348){
        System.out.print ("\nSigned in as: " + name[3]);
        control() ;

        } else if (empNumber == 12349){
        System.out.print ("\nSigned in as: " + name[4]);
        control() ;

        }
        else {
        System.out.print ("\nNTRUDER ALERT!\n\nPLEASE ENTER THE CORRECT ID NUMBER!") ;
        start () ;
        }
}

public static void signOff ()
{
    System.out.print ("Signing off...\n") ;
    start () ;
}

public static String timeIn ()
{
    System.out.print ("Please enter time in: ") ;
    timeIn = s.next () ;
    control () ;

    return (timeIn) ;
}

public static String timeOut ()
{
    System.out.print ("Please enter time out: ") ;
    timeOut = s.next () ;
    control () ;

    return (timeOut) ;
}
}
4

3 回答 3

1

产生这种输出的最简单方法是使用String.format()- 它的格式字符串语法支持填充以及日期和时间格式。

于 2012-01-23T08:50:42.297 回答
0

关于标签你的信息,你到底是什么意思?你的意思是打印一个空格,就像你按下tab键盘上的按钮一样,还是你的意思是让诸如 excel 之类的程序能够以列的形式显示项目?

对于第一个,如果您打印这样的内容: ,这将导致在andstr1 + "\t" + str2之间放置一个空格,就像您按下键盘上的键一样。str1str2tab

如果是第二个选项,则需要输入分隔符,例如 a;以允许 excel 等程序为您拆分它们,因此您需要执行以下操作:str1 + ";" + str2.

对于第二个问题,你可以看一下SimpleDateFormat类。你可以这样做:

K:mm a

这应该以 AM/PM 格式打印时间。

于 2012-01-23T08:29:28.600 回答
0

您可以\t在 Java 中用作制表符。下面是一个更好的选择:您可以确定字符串当前部分的长度,int n = s.length()并在其上附加一些空格以获得固定的字符串长度m。与 \t 相比,这为您提供了更多的宽度自由度,并且对于不同的字符串长度,无论如何您都需要它。

示例代码:

public String tab(String s, int m) {
    int n = s.length();
    StringBuffer sb = new StringBuffer();
    for (int i=n; i<m; i++) sb.append(" ");
    return s+sb.toString();
}
于 2012-01-23T08:31:58.547 回答