【发布时间】:2018-01-17 07:46:58
【问题描述】:
我这周刚开始学习 C#,我正在尝试运行一个简单的代码,如果用户输入文本,则提示输入数字,如果输入负数,则提示用户输入正数(所以文本的布尔运算和否定的 if 语句)。如果他们输入有效(正)数,程序将继续执行其余步骤。
但是使用此代码,如果用户输入一个负数,然后是一个文本,然后是另一个负数等等,它似乎会中断循环并继续执行下一个操作。
代码是一个更大程序的一部分,因此我将其缩小并仅提取最关键的部分以使其运行。有人能发现我在这里错过了什么吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IncomeTaxCalculator
{
class IncomeTax
{
public static void Main()
{
double income;
income = income_input();
show_output(income);
}
public static double income_input()
{
double income; string income_string; bool bad_value = true;
do
{
Console.Write("What is your total income: ");
income_string = Console.ReadLine();
if (double.TryParse(income_string, out income))
{
bad_value = false;
}
else
{
Console.WriteLine("Enter your income as a whole-dollar numeric figure.");
}
if (income < 0)
{
Console.WriteLine("Your income cannot be a negative");
}
} while (bad_value || income < 0);
return income;
}
public static void show_output(double income)
{
Console.WriteLine("Your income is " + income);
Console.WriteLine("\n\n Hit Enter to exit.");
Console.ReadLine();
}
}
}
【问题讨论】:
-
我已经可以告诉您,您在标题中所做的假设是错误的。也许调试它以查看值:)
-
在 C# 中,命名方法的标准是
PascalCase(IncomeInput而不是income_input),对于局部变量,它是camelCase(incomeString而不是income_string) -
你需要在循环开始时将
bad_value重新初始化为true。 -
为帮助的家伙干杯