2012-08-11 66 views
1

所以我想格式化这个文本,所以它被填充,并且都很好和正方形不依赖于不同地址大小或名称的长度。然而,现在它以这种格式......没有显示出有关实际变量和价值的信息。现在显示C#格式的方法输出,没有数据显示

我做

Console.WriteLine(emp[i].GetEmpName()); 

之前,它工作得很好,它显示存储在该方法的字符串。现在我不确定断开连接的位置,但现在显示空白值,例如

Employee Name: 
EmployeeAddress: 

等等。

for (int i = 0; i < count; i++) 
     { 
      string eNum = "Employee Number: "; 
      string eName = "Emplyee Name: "; 
      string eAddress = "Employee Address: "; 


      Console.WriteLine("------------------------------------------------------------------------"); 
      Console.Write("|"); 
      Console.Write(eNum.PadRight(30), emp[i].GetEmpNum()); 
      Console.Write("|\n"); 

      Console.Write("|"); 
      Console.Write(eName.PadRight(30), emp[i].GetEmpName()); 
      Console.Write("|\n"); 

      Console.Write("|"); 
      Console.Write(eAddress.PadRight(30), emp[i].GetEmpAddress()); 
      Console.Write("|\n"); 
      //Console.Write(); 
      //Console.Write(); 
      Console.Write("|"); 
      Console.Write("Net Pay: {0:f2}", emp[i].CalcSalary()); 
      Console.WriteLine("\n------------------------------------------------------ ------------------\n\n"); 
     } 

其余的代码在这里,如果你想看到它。只要你不格式化输出,它就会起作用。

我哪里去了这么可怕的错误?!?!

using System; 
using System.IO; 

namespace Proj10 
{ 
class Program 
{ 
    const int ARRAY_TWO = 2; 

    static void Main() 
    { 
     int count = 0; 

     Employee[] emp = new Employee[10]; 

     string environment = System.Environment.GetFolderPath 
     (System.Environment.SpecialFolder.Personal) + "\\"; 

     Console.WriteLine("Enter a file name in My Documents: "); 
     string input = Console.ReadLine(); 

     string path = environment + input; 

     StreamReader myFile = new StreamReader(path); 


     do 
     { 

      if (myFile.EndOfStream) 
      { 
       break; 
      } 
      int num = int.Parse(myFile.ReadLine()); 
      string name = myFile.ReadLine(); 
      string address = myFile.ReadLine(); 
      string hourNworked = myFile.ReadLine(); 
      double[] values = new double[ARRAY_TWO]; 
      sort(hourNworked, ref values); 

      emp[count] = new Employee(); 
      emp[count].SetEmpNum(num); 
      emp[count].SetEmpName(name); 
      emp[count].SetEmpAddress(address); 
      emp[count].SetEmpHrlyPay(values[0]); 
      emp[count].SetEmpHrsWrked(values[1]); 



      //while count < 10 && !myfile.EOF(); 

      //print loop using count 
      //emp[0].GetEmpNum(); 
      //emp[0].CalcSalary(); 

      /*Integer[] number = new Integer[5]; 
      for (int i = 0; i < 5; i++) 
       number[i] = new Integer(i); 
      for (int i = 0; i < 5; i++) 
       Console.WriteLine(number[i].GetValue()); 
      */ 

      count++; 


     } while (count < 10); 

     Console.WriteLine("\n\nAuthor: Daniel Demers"); 
     Console.WriteLine("CS 1400 X01\n"); 

     for (int i = 0; i < count; i++) 
     { 
      string eNum = "Employee Number: "; 
      string eName = "Emplyee Name: "; 
      string eAddress = "Employee Address: "; 


      Console.WriteLine("------------------------------------------------------------------------"); 
      Console.Write("|"); 
      Console.Write(eNum.PadRight(30), emp[i].GetEmpNum()); 
      Console.Write("|\n"); 

      Console.Write("|"); 
      Console.Write(eName.PadRight(30), emp[i].GetEmpName()); 
      Console.Write("|\n"); 

      Console.Write("|"); 
      Console.Write(eAddress.PadRight(30), emp[i].GetEmpAddress()); 
      Console.Write("|\n"); 
      //Console.Write(); 
      //Console.Write(); 
      Console.Write("|"); 
      Console.Write("Net Pay: {0:f2}", emp[i].CalcSalary()); 
      Console.WriteLine("\n------------------------------------------------------------------------\n\n"); 
     } 

     Console.ReadLine(); 
    } 

    public static void sort(string hourNworked, ref double[] values) 
    { 
     char[] rules = { ' ' }; 
     string[] splitArray = hourNworked.Split(rules); 
     values[0] = double.Parse(splitArray[0]); 
     values[1] = double.Parse(splitArray[1]); 
    } 

    public class Employee 
    { 
     private int empNum; 
     private string name; 
     private string address; 
     private double hrlyPay; 
     private double hrsWrkd; 
     private double GROSS; 
     private double overTime; 
     private double overTimePay; 
     private double overTimeHours; 
     private double NET; 
     private double regTime; 
     private double fTaxAmount; 
     private double sTaxAmount; 

     private const double FED_TAX = .20; 
     private const double STATE_TAX = .075; 
     private const double OT_MULTIPLYER = 1.5; 
     private const int FORTY_HOURS = 40; 


     public Employee() 
     { 
      empNum = 0; 
     } 

     public void SetEmpNum(int n) 
     { 
      empNum = n; 
     } 

     public int GetEmpNum() 
     { 
      return empNum; 
     } 
     public void SetEmpName(string n) 
     { 
      name = n; 
     } 
     public string GetEmpName() 
     { 
      return name; 
     } 
     public void SetEmpAddress(string a) 
     { 
      address = a; 
     } 
     public string GetEmpAddress() 
     { 
      return address; 
     } 
     public void SetEmpHrlyPay(double h) 
     { 
      hrlyPay = h; 
     } 
     public double GetEmpHrlyPay() 
     { 
      return hrlyPay; 
     } 
     public void SetEmpHrsWrked(double w) 
     { 
      hrsWrkd = w; 
     } 
     public double GetEmpHrsWrkd() 
     { 
      return hrsWrkd; 
     } 
     public double CalcSalary() 
     { 
      if (hrsWrkd > 40) 
      { 
       overTimeHours = hrsWrkd - FORTY_HOURS; 
       overTimePay = hrlyPay * OT_MULTIPLYER; 
       overTime = overTimePay * overTimeHours; 
       regTime = (hrsWrkd - overTimeHours) * hrlyPay; 
       GROSS = overTime + regTime; 

       fTaxAmount = (regTime + overTime) * FED_TAX; 
       sTaxAmount = (regTime + overTime) * STATE_TAX; 

       NET = GROSS - (fTaxAmount + sTaxAmount); 

       return NET; 
      } 
      else 
      { 
       regTime = hrlyPay * hrsWrkd; 
       fTaxAmount = regTime * FED_TAX; 
       sTaxAmount = regTime * STATE_TAX; 

       NET = regTime - (fTaxAmount + sTaxAmount); 

       return NET; 
      } 
     } 
    } 
} 
} 

回答

4

您使用的Console.Write overload采用格式字符串和对象。由于第一个参数不包含任何占位符,因此不使用第二个参数。

试试这个:

Console.WriteLine("|{0,-30}{1,-20}|", eNum, emp[i].GetEmpNum()); 

看到它联机工作:ideone

+0

非常好,谢谢 – Dan 2012-08-11 21:30:34