C# 控制台总是写入相同的数字
我不知道出了什么问题,但我一直在控制台中得到相同的结果: 我解决了那个问题,但现在我的控制台什么也没显示。 我更新了我的代码 这是我的练习: 编写一个程序,要求用户连续输入一个数字或键入“退出”退出。数字列表可能包含重复项。显示用户输入的唯一编号 这是我的代码:C# 控制台总是写入相同的数字,c#,.net,C#,.net,我不知道出了什么问题,但我一直在控制台中得到相同的结果: 我解决了那个问题,但现在我的控制台什么也没显示。 我更新了我的代码 这是我的练习: 编写一个程序,要求用户连续输入一个数字或键入“退出”退出。数字列表可能包含重复项。显示用户输入的唯一编号 这是我的代码: while (true) { var numbers = new List<int>(); Console.WriteLine("write a number or type
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");
}
}
}
}
while(true)
{
变量编号=新列表();
WriteLine(“如果您想退出,请写一个数字或键入quit,如果您想完成重写:”);
var input=Console.ReadLine();
if(input.ToLower()=“退出”)
{
打破
}
如果(输入.ToLower()=“超过”)
{
var uniq=新列表();
foreach(数值中的其他变量)
{
转换为32(其他);
如果(!uniq.包含(其他))
{
uniq.Add(其他);
转换为32(其他);
控制台写入线(其他);
持续
}
国际货币基金组织;
if(int.TryParse(输入,输出cifre))
{
编号。添加(cifre);
}
其他的
{
Console.WriteLine(“无效输入,键入'quit','over'或数字值”);
}
}
}
}
谢谢你的帮助
我想我只需要抄这句话:
变量编号=新列表();
到while循环的顶部,并实际使用我在bigning中使用的所有东西(因为循环列表本身并不是sabing数字)。我会编辑我的代码,这样你就可以继续练习了
希望它能帮助别人
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);
}
}
}
}
var number=新列表();
while(true)
{
Console.WriteLine(“输入数字或退出或结束”);
var input=Console.ReadLine();
如果(输入=“退出”)
{
打破
}
如果(输入=“超过”)
{
var uniq=新列表();
foreach(数值形式的var值)
{
如果(!uniq.Contains(value)){
增加(价值);
}
}
foreach(uniq中的变量numbr){
控制台写入线(numbr);
}
}
否则{
//输入dodasv数
var conv=Convert.ToInt32(输入);
数字。添加(conv);
}
}
}
}
感谢您的帮助在检查用户是否键入“结束”之前,您已经转换了输入数据中的字符并将其添加到列表中。换句话说,您正在将ASCII字符值
'o'
,'v'
,'e'
,'r'
添加到数字列表中
移动“结束”复选框,确保它们不会添加到列表中:
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");
}
假设每次都要输入一个数值。代码的逻辑似乎有一些问题。下面是我用来帮助您的伪代码:
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
这将帮助您重写程序。var numbers=new List();
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);
}
Console.WriteLine(“输入数字或退出”);
while(true)
{
var value=Console.ReadLine();
如果(值=“退出”)
{
打破
}
其他的
{
如果(!numbers.Contains(Convert.ToInt32(value)))
添加(转换为32(值));
}
}
foreach(数值中的变量编号)
{
控制台写入线(编号);
}
尝试单击build,然后单击clean solution您希望该行如何Convert.ToInt32(其他)代码>要做什么?尝试过了,但仍然是samei希望它将其从类型字符串转换为int?我是一个初学者,所以我可能错了您正在将lin上的每个字符转换为不同的数字,例如,如果输入“95”,您将把字符9和字符5作为整数相加,什么翻译成57和53。你能给我看一下吗?我不明白,我刚开始用c,现在我没有显示那些数字,但现在我没有任何结果,我会编辑我的帖子,所以你会使用我现在的代码添加数字的代码现在位于if(input.ToLower()=“over”)
块中-它应该放在外面。而continue
操作应该在foreach
块之后进行。HashSet
会更好,因为您可以避免调用Contains
。
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);
}