现在显示C#格式的方法输出,没有数据显示
问题描述:
所以我想格式化这个文本,所以它被填充,并且都很好和正方形不依赖于不同地址大小或名称的长度。然而,现在它以这种格式......没有显示出有关实际变量和价值的信息。现在显示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;
}
}
}
}
}
答
您使用的Console.Write
overload采用格式字符串和对象。由于第一个参数不包含任何占位符,因此不使用第二个参数。
试试这个:
Console.WriteLine("|{0,-30}{1,-20}|", eNum, emp[i].GetEmpNum());
看到它联机工作:ideone
非常好,谢谢 – Dan 2012-08-11 21:30:34