我有一个功课,我无法弄清楚该怎么做。我不确定老师是否写错了(他是一个坏人)或者是否有办法完成任务。
我在Visual C#2010 Express - 控制台应用程序
中工作从键盘读取一个四位整数,例如5893,并通过每个标签显示彼此分开的数字。使用整数除法和模数运算符%来挑选每个数字。如果用户输入4567,则输出如下:
4567
4 5 6 7
当然,我知道如何使用\t
分隔数字以及读取输入并将其显示给用户。但我怎么能用分裂和剩余的算子“挑选”每个数字呢?也许他意味着别的东西,但不确定。
如何确保用户输入的内容是数字而不是字母?
我是否必须使用Char.IsLetter
,因为我无法弄清楚如何在解析后的字符串上使用它。
示例:
string number1;
int x;
Console.Write("Please enter a number to calculate: ");
number1 = Console.ReadLine();
x = Int32.Parse(number1);
我应该使用什么方法以及将它放在哪里?因为现在我只收到错误,如果我尝试输入e
字母,应用程序就会关闭。
答案 0 :(得分:5)
第一个问题更多是关于数学而不是编程。你知道除法和模数运算符的作用。想想你如何使用它们来获得最后一个(最不重要的)数字。完成后,您可以为第二位数(十位)应用类似的技术,然后对数百和数千应用相同的技术,依此类推。
您已找到Char.IsLetter
,但也有Char.IsDigit
,可以更直接地执行您想要的操作。你可以检查一个字符,你拥有的是一串字符。看看foreach
循环。
答案 1 :(得分:1)
System.Int32.TryParse()可能是更好的选择。
答案 2 :(得分:0)
是的,你的任务是有道理的。假设您有一个整数x = 4567.要选择位置A的数字,您将使用:
result = (int)((x / (A * 10)) % 10);
这个的第一部分(x /(A * 10))“向右移动”x。因此,A = 1的值将4567除以10,结果为456.7。然后使用模运算符“%”来选择该数字的单位部分。最后转换为int以删除小数部分。
答案 3 :(得分:0)
好的,我不会给出完整的解决方案(毕竟,这是作业;))。
此代码将检查输入中是否有四个字符:
string input;
do
{
input = Console.ReadLine();
if (input.Length != 4)
Console.WriteLine("You have to enter FOUR digits");
} while (input.Length != 4);
这可能是检查数字的一种方法:
bool isOk = true;
foreach (char c in input.ToArray())
{
if (!Char.IsDigit(c))
{
Console.WriteLine("You have to enter four DIGITS");
isOk = false;
break;
}
}
这种方法不涉及数学,但你也可以这样做:
int num = int.Parse(input);
int tensOfThousands = num / 10000;
int thousands = (num - tensOfThousands) / 1000;
int lastDigit = num % 10;
//the rest of the digits are up to you ;)
答案 4 :(得分:0)
对于C#的新手,解决方案可以更简单。
// Variables
int number = 1234;
int remainder;
string s = "";
while (number > 0) {
remainder = number % 10;
s = remainder + "\n" + s;
number /= 10;
}
Console.Write (s);