我不知道什么是错的,但我一直在控制台得到相同的结果:
111 118 101 114
我解决了这个问题,但现在我的控制台没有向我显示任何内容。 我更新了我的代码!
这是我的练习: 编写程序并要求用户连续输入数字或输入“退出”退出。数字列表可能包括重复。显示用户输入的唯一编号。
这是我的代码:
while (true)
{
var numbers = new List<int>();
Console.WriteLine("write a number or type quit if you want to exit, if you want to finish write over: ");
var input = Console.ReadLine();
if (input.ToLower() == "quit")
{
break;
}
if (input.ToLower() == "over")
{
var uniq = new List<int>();
foreach (var other in numbers)
{
Convert.ToInt32(other);
if (!uniq.Contains(other))
{
uniq.Add(other);
Convert.ToInt32(other);
Console.WriteLine(other);
continue;
}
int cifre;
if (int.TryParse(input, out cifre))
{
numbers.Add(cifre);
}
else
{
Console.WriteLine("Invalid input, type 'quit', 'over' or a numeric value");
}
}
}
}
感谢您的帮助。
我想通了,我只需复制这一行:
var numbers = new List(); 到了while循环的顶部并且实际上使用了与bignning相同的所有内容(因为循环列表本身没有数字)。我将编辑我的代码,以便您可以获救。
希望它有助于某人
var numbers = new List<int>();
while (true)
{
Console.WriteLine("enter a number or quit or over");
var input = Console.ReadLine();
if (input == "quit")
{
break;
}
if (input == "over")
{
var uniq = new List<int>();
foreach (var value in numbers)
{
if (!uniq.Contains(value)) {
uniq.Add(value);
}
}
foreach (var numbr in uniq) {
Console.WriteLine(numbr);
}
}
else {
// inpout dodas v numbers
var conv = Convert.ToInt32(input);
numbers.Add(conv);
}
}
}
}
感谢您的帮助
答案 0 :(得分:1)
var numbers = new List<int>();
Console.WriteLine("Enter numbers or Quit");
while (true)
{
var value = Console.ReadLine();
if (value == "Quit")
{
break;
}
else
{
if (!numbers.Contains(Convert.ToInt32(value)))
numbers.Add(Convert.ToInt32(value));
}
}
foreach (var number in numbers)
{
Console.WriteLine(number);
}
答案 1 :(得分:0)
在检查用户是否输入“over”之前,您已经转换了输入数据中的字符并将其添加到列表中。换句话说,您要将'o'
,'v'
,'e'
,'r'
的ASCII字符值添加到数字列表中。
移动“结束”检查并确保它们不会添加到列表中:
while (true)
{
...input stuff
if (input.ToLower() == "quit")
{
break;
}
if (input.ToLower() == "over")
{
...make unique and report
continue;
}
foreach (var number in input)
{
var cifre = Convert.ToInt32(number);
numbers.Add(cifre);
}
}
这将解决您在列表中包含这些相同数字的问题。您可能还想将foreach
替换为:
int cifre;
if (int.TryParse(input, out cifre))
{
numbers.Add(cifre);
}
else
{
Console.WriteLine("Invalid input, type 'quit', 'over' or a numeric value");
}
假设您每次都要输入一个数值。
答案 2 :(得分:0)
看起来代码的逻辑存在一些问题。这是我提出的帮助你的伪代码:
While (true)
if (quit)
//end program
if (over)
//print out the list of integers
else
if (input is not a number)
continue
if (number is not in list)
//add to list
else
//do nothing
这可以帮助您重写程序。