2012-01-23 16 views
0

私は、従業員のID番号、時間、およびタイムアウトを入力するプログラムを作成するように求められました。データは.txtファイルに書き込まれます。 FileWriterを使用するはずですが、情報をタブすることが可能かどうか尋ねるかもしれません。同上私の.txtファイルのようなものにしたい。またFileWriterと12時間ベースの時刻をjavaで計算する?

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) ; 
} 
} 
+0

このプログラムの流れにはいくつか問題があります。プログラムが何をするのかを試してみてください: 'main'メソッドから始めて、プログラムの流れに従ってステップを実行し、それがあなたがしなければならないと思っていることをしているかどうかを考えてください。 – Jesper

答えて

0

、あなたはそのことにより、正確に何を意味するのですか? キーボードのtabボタンを押した場合と同じ空白を印刷することを意味しますか、またはExcelなどのプログラムで列単位で項目を表示できるようにすることを意味しますか?あなたはこのような何かを印刷する場合は、最初の1のために

は、: str1 + "\t" + str2、これはホワイトスペースを使用すると、キーボードの tabキーを押したときと同じように、 str1str2の間に配置されるようになります。

それは第二の選択肢がある場合、あなたはこのような何か実行する必要がありますので、あなたのためにそれらを分割するためにExcelなどのプログラムを許可するなど;として、区切り文字を入力して旧姓う:str1 + ";" + str2を。

2番目の質問については、SimpleDateFormatクラスをご覧ください。あなたはそのような何かを行うことができます。

K:mm a

これはAM/PM形式で時刻を印刷する必要があります。

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(); 
} 
1

出力のこの種を生成する最も簡単な方法は、String.format()を使用することです - そのformat string syntaxがパディングだけでなく、日付と時刻のフォーマットをサポートしています。

関連する問題