Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台总是写入相同的数字_C#_.net - Fatal编程技术网

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);
        }