如果用户输入负数,是否可以退出

Is it possible to exit if user input negative number

提问人:Musta_Jaguaari 提问时间:7/8/2022 更新时间:7/17/2022 访问量:277

问:

在 C# 中执行以下程序时,程序不会编译,任何修复错误的提示

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        int input;
        Console.WriteLine("Input a number:");
        int input=Console.ReadLine();
        while (true)
        {
            input = int.Parse(Console.ReadLine());
            if (input <= 0) break;
        }​

        Console.Write("Your input: ");
        foreach (int number in numbers)
        {
            Console.Write(number + " ");
        }
    }
}
C# for 循环 while 循环 foreach 中断

评论


答:

0赞 Macko 7/8/2022 #1

您似乎正在尝试在第 7 行和第 9 行中初始化变量两次。这将阻止您的代码编译。input

此外,看起来该变量未在任何地方初始化。numbers

0赞 ΦXocę 웃 Пepeúpa ツ 7/8/2022 #2

是的,您肯定不能在同一作用域中声明 2 个具有相同名称的变量:

你的 int 输入是我所说的原因

int input;  //    <----
Console.WriteLine("Input a number:");
int input=Console.ReadLine();  //   <--- 

评论

0赞 Musta_Jaguaari 7/8/2022
你有什么建议?
0赞 Musta_Jaguaari 7/10/2022
这对我有用,但这个想法是我应该将输入用户存储到 List,然后在用户输入负输入时程序中断时打印该 List。
0赞 Sami Jildeh 7/8/2022 #3

您有两个同名的变量,这是错误的。

int input;
int input=Console.ReadLine();

此外,您没有保存用户输入,输入变量保存用户输入的最后一个输入。它始终有一个值。 在使用它之前,您必须声明数字并将用户输入存储在其中以在 foreach 循环中打印它们。

输入声明一次为 int,然后使用它而不重新声明它。同时将数字声明为 int 和 while 循环的列表,如下所示:

input = int.Parse(Console.ReadLine());
if (input <= 0) 
    {break;}
else
    {numbers.add(input);}

要将第一个用户输入保存在 while 循环之外,请执行以下操作:

int input;
Console.WriteLine("Input numbers:");//As you expect the user to input more than one number
input=int.Parse(Console.ReadLine());
if(input > 0)
{numbers.add(input);}
0赞 Hamid Israfilov 7/8/2022 #4

这一定是你想要的:

    static void Main()
    {
        string inputText;
        int input;
        var numbers = new List<int>();
        string inputNumbers = "";
        bool negativeInserted = false;
        while (negativeInserted == false)
        {
            Console.WriteLine("Input a number:");
            inputText = Console.ReadLine();
            input = Convert.ToInt32(inputText);
            if (input >= 0)
            {
                numbers.Add(input);
            }
            else
            {
                negativeInserted = true;
            }
        }
        if (numbers.Count > 0)
        {
            foreach (var number in numbers)
            {
                if (numbers.Count == 1)
                {
                    inputNumbers = inputNumbers + number.ToString();
                }
                else if (numbers.Count > 1 && number != numbers.Last())
                {
                    inputNumbers = inputNumbers + number.ToString() + ",";
                }
                else if (number == numbers.Last())
                {
                    inputNumbers = inputNumbers + number.ToString() + "!";
                }
            }
        }
        else
        {
            inputNumbers = "Input number is negative!";
        }

        Console.Write("Your input numbers:" + inputNumbers);
        
        Console.Read();
    }

第一个错误:你声明了两次 int input。 第二:您不能将 Console.Readline() 值设置为 int 变量,因为它以字符串形式返回。 第三:数字在任何地方都没有初始化,也没有必要。第四:使用 return 而不是 break。

评论

0赞 Musta_Jaguaari 7/9/2022
这对我有用,但这个想法是我应该将输入用户存储到 List,然后在用户输入负输入时程序中断时打印该 List。
0赞 Hamid Israfilov 7/17/2022
@Musta_Jaguaari有点晚了,但更新了我的答案
0赞 Musta_Jaguaari 7/9/2022 #5

这对我有用,但这个想法是我应该将输入用户存储到 List,然后在用户输入负输入时程序中断时打印该 List。这是我在你们的帮助下构建的代码。它几乎完成了,但未打印存储输入的列表。

using System;
using System.Collections.Generic;
class Program
{
    public static void Main(string[] args)
        {
        int input;
    start:
        Console.Write("Input a number: ");
        string inputText = Console.ReadLine();
        input = Convert.ToInt32(inputText);
        List<int> numbers = new List<int>();
        numbers.Add(input);
        while (input >= 0)
        {
            goto start;
        }
        while (input < 0)
        {
            return;
        }

        Console.Write("Your input: ");
        foreach (int number in numbers)
        {
            Console.Write(number + " ");
            }
        }
    }

评论

0赞 Musta_Jaguaari 7/9/2022
程序应在因输入负数而中断后打印所有正列表编号