【发布时间】:2017-09-03 04:54:56
【问题描述】:
要求用户输入收入和支出,他们可以输入任意数量的每个。将有单独的 void 方法用于输入这些值,这些值将被发送到另一个类。总收入、总支出和总利润将使用 ToString/String.Format 方法显示。我试图让它工作,我已经切换了类、方法等的保护。我已经尝试了所有方法,但我无法使用 ToString 方法正确显示值。这些值显示为 $0.00。另外,我收到一条注释,上面写着 WriteLine(aIncomes.ToString()) 是对 ToString 的冗余调用,而 ToString 显示为灰色。如果我在 tostring 方法中写入变量,则会显示正确的值。所以我知道这个问题与对象实例没有正确传递到 tostring 方法有关。
任何 cmets、解释和/或解决方案将不胜感激。
public class MainClass
{
public static Income aIncomes = new Income();
public static void Main(string[] args)
{
Header();
Directions();
EnterIncome();
EnterExpenses();
WriteLine(aIncomes.ToString());
Read();
}
public static void EnterIncome()
{
double companyIncome;
double allCompanyIncome = 0;
string inputValue;
Write("Enter Income (enter value -99 to stop) ");
inputValue = ReadLine();
while (inputValue != "-99")
{
if (double.TryParse(inputValue, out companyIncome) == false)
{
WriteLine("Invalid input - 0 stored in income");
}
else
{
aIncomes.companyIncome = double.Parse(inputValue);
allCompanyIncome += aIncomes.companyIncome;
aIncomes.allCompanyIncome = allCompanyIncome;
}
Write("Enter Income (Enter value -99 to stop) ");
inputValue = ReadLine();
}
//WriteLine(aIncomes.companyIncome);
//WriteLine(aIncomes.allCompanyIncome);
}
public static void EnterExpenses()
{
double companyExpenses;
double allCompanyExpenses = 0;
string inputValue;
Write("Enter Expense (Enter value -99 to stop) ");
inputValue = ReadLine();
while (inputValue != "-99")
{
if (double.TryParse(inputValue, out companyExpenses) == false)
{
WriteLine("Invalid input - 0 stored in expenses");
}
else
{
aIncomes.companyExpenses = double.Parse(inputValue);
allCompanyExpenses += aIncomes.companyExpenses;
aIncomes.allCompanyExpenses = allCompanyExpenses;
}
Write("Enter Expense (Enter value -99 to stop) ");
inputValue = ReadLine();
}
//WriteLine(aIncomes.companyExpenses);
//WriteLine(aIncomes.allCompanyExpenses);
//WriteLine(aIncomes.allCompanyIncome - aIncomes.allCompanyExpenses);
}
public static void MessageBox()
{
if (Income.companyProfit > 0)
{
System.Windows.Forms.MessageBox.Show("Westin made a profit", "Westin");
}
else if (Income.companyProfit <= 0)
{
System.Windows.Forms.MessageBox.Show("Westin had a loss", "Westin");
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~
public class Income
{
double companyTotalIncome;
double companyTotalExpenses;
public static double companyProfit;
public double companyIncome;
public double companyExpenses;
public double allCompanyIncome;
public double allCompanyExpenses;
public Income()
{
}
public Income(double ofAllCompanyIncome, double ofAllCompanyExpenses)
{
//companyIncome = ofCompanyIncome;
//companyExpenses = ofCompanyExpenses;
allCompanyIncome = ofAllCompanyIncome;
allCompanyExpenses = ofAllCompanyExpenses;
}
public double AllCompanyIncome
{
set
{
allCompanyIncome = value;
companyTotalIncome += allCompanyIncome;
}
}
public double AllCompanyExpenses
{
set
{
allCompanyExpenses = value;
companyTotalExpenses += allCompanyExpenses;
}
}
public void Profit()
{
companyProfit = companyTotalIncome - companyTotalExpenses;
}
public override string ToString()
{
WriteLine(allCompanyIncome);
WriteLine(allCompanyExpenses);
string str = string.Empty;
str += string.Format("Total Income {0:C} \n", companyTotalIncome);
str += string.Format("Total Expenses {0:C} \n", companyTotalExpenses);
str += string.Format("Profit {0:C}", companyProfit);
return str;
}
}
【问题讨论】:
标签: c# class variables methods tostring