提问人:Musta_Jaguaari 提问时间:7/8/2022 更新时间:7/17/2022 访问量:277
如果用户输入负数,是否可以退出
Is it possible to exit if user input negative number
问:
在 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 + " ");
}
}
}
答:
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
程序应在因输入负数而中断后打印所有正列表编号
评论