C# 要求用户输入5个数字,然后使用循环将总数相加 使用系统; 双打 { 静态void Main() { //声明变量 双DblSumTotal=0; 双限=0; //要求用户输入5个要添加的数字 Console.Clear(); Console.WriteLine(“输入5个要相加的数字”); 做 { DblSumTotal=DblSumTotal+(Convert.ToDouble(Console.ReadLine()); 极限=极限+1; }而(限值
这是我目前掌握的代码。它将编译,但我在尝试运行它时收到一个错误: 未处理的异常:输入字符串的格式不正确。位于sumtoubles.Main()的System.Double.Parse(字符串s,IFormatProvider provider)处的System.Number.ParseDouble(字符串值、NumberStyles选项、NumberFormat信息numfmt)C# 要求用户输入5个数字,然后使用循环将总数相加 使用系统; 双打 { 静态void Main() { //声明变量 双DblSumTotal=0; 双限=0; //要求用户输入5个要添加的数字 Console.Clear(); Console.WriteLine(“输入5个要相加的数字”); 做 { DblSumTotal=DblSumTotal+(Convert.ToDouble(Console.ReadLine()); 极限=极限+1; }而(限值,c#,C#,这是我目前掌握的代码。它将编译,但我在尝试运行它时收到一个错误: 未处理的异常:输入字符串的格式不正确。位于sumtoubles.Main()的System.Double.Parse(字符串s,IFormatProvider provider)处的System.Number.ParseDouble(字符串值、NumberStyles选项、NumberFormat信息numfmt) 我对编码非常陌生,我似乎无法理解循环。请帮助!转换。ToDouble会在输入错误时抛出您看到的异常,例如空字符串。您
我对编码非常陌生,我似乎无法理解循环。请帮助!
转换。ToDouble
会在输入错误时抛出您看到的异常,例如空字符串。您可能想使用try catch
块来处理异常,或者您也可以使用不在f中抛出的块输入错误的ace
using System;
class SumDoubles
{
static void Main()
{
//Declare variables
double DblSumTotal = 0;
double LIMIT = 0;
//Ask user to input 5 numbers to be added
Console.Clear();
Console.WriteLine("Enter 5 numbers to be added together.");
do
{
DblSumTotal = DblSumTotal + (Convert.ToDouble(Console.ReadLine()));
LIMIT = LIMIT + 1;
} while (LIMIT < 6);
//Output total
Console.WriteLine("The total sum of the 5 numbers is " + DblSumTotal);
Console.ReadLine();
}
}
我还注意到这段代码中有一个“offby1”错误
double output;
bool isValid = double.TryParse("10", out output); // isValid is true and output contains 10
isValid = double.TryParse("lsdf", out output); // isValid is false
Console.WriteLine(“输入5个要相加的数字”);
做
{
DblSumTotal=DblSumTotal+(Convert.ToDouble(Console.ReadLine());
极限=极限+1;
}而(限值<6);
您的循环有6次迭代(LIMIT=0,1,2,3,4,5),您需要5个数字。您可能正在按一个额外的“enter”键,这会导致一个空字符串
“
传递到Convert.ToDouble
,从而导致异常。将while(LIMIT<6)
更改为while(LIMIT<5)
您的程序运行正常,只是它读取的是六个数字而不是五个数字
我认为你的问题与静电复印所说的有关,你试图同时输入所有的数字
如果您键入“4”输入“5”输入“10”输入等等,它将正常工作。=)
PS:请记住,“.”和“.”之间有区别Sasse和Tejas Sharma都有一个观点。完整的代码可能如下所示:
Console.WriteLine("Enter 5 numbers to be added together.");
do
{
DblSumTotal = DblSumTotal + (Convert.ToDouble(Console.ReadLine()));
LIMIT = LIMIT + 1;
} while (LIMIT < 6);
使用系统;
双打
{
静态void Main()
{
//声明变量
双DblSumTotal=0;
双限=0;
//要求用户输入5个要添加的数字
Console.Clear();
Console.WriteLine(“输入5个要相加的数字”);
做
{
双d;
如果(!double.TryParse(Console.ReadLine(),out d)){
Console.WriteLine(“格式错误!!!”);
}否则{
DblSumTotal=DblSumTotal+d;
极限=极限+1;
}
}而(限值<5);
//总产量
Console.WriteLine(“5个数字的总和为”+DblSumTotal);
Console.ReadLine();
}
}
`
另外,如果你像我一样使用非英语语言环境(我有捷克语系统),那么可以解析为double的字符串看起来有点不同(即捷克语“1,2”与英语“1.2”)我认为可以通过使用for循环来简化
using System;
class SumDoubles
{
static void Main()
{
//Declare variables
double DblSumTotal = 0;
double LIMIT = 0;
//Ask user to input 5 numbers to be added
Console.Clear();
Console.WriteLine("Enter 5 numbers to be added together.");
do
{
double d;
if (!double.TryParse(Console.ReadLine(), out d)) {
Console.WriteLine("Format error!!!");
} else {
DblSumTotal = DblSumTotal + d;
LIMIT = LIMIT + 1;
}
} while (LIMIT < 5);
//Output total
Console.WriteLine("The total sum of the 5 numbers is " + DblSumTotal);
Console.ReadLine();
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间控制台应用程序2
{
班级计划
{
静态void Main(字符串[]参数)
{
int-read;
整数和=0;
Console.WriteLine(“输入5个数字:”);
对于(int i=0;i<5;i++)
{
read=int.Parse(Console.ReadLine());
总和=总和+读取;
}
Console.WriteLine(“5个数字的总和为”+总和);
}
}
}
或者,如果您仍然想使用while循环,它也同样简单
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int read;
int sum = 0;
Console.WriteLine("Enter 5 numbers: ");
for (int i = 0; i < 5; i++)
{
read = int.Parse(Console.ReadLine());
sum = sum + read;
}
Console.WriteLine("The total sum of the 5 numbers are " + sum);
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间控制台应用程序2
{
班级计划
{
静态void Main(字符串[]参数)
{
int-read;
整数和=0;
int i=0;
Console.WriteLine(“输入5个数字:”);
输入是数字。我通常试着把5个1加在一起。输出应该是“5个数字的总和是5”“但是我收到一个错误,我在哪里转换错误了?你在每个输入数字后按回车键了吗?听起来你可能没有按照你编码的方式使用这个程序作为旁注,按照你循环的方式,它实际上需要6个数字而不是5个…因为do while()在最后计算表达式。我认为while循环或for循环在这里更合适。哦,尝试分解您的语句,以便设置断点并查看到底发生了什么。这就是我要做的。我键入1,然后输入5次并收到错误。正如我所说的,它希望您按现在的方式执行六次。因此如果你上次只是按“回车”然后它将获取您的空字符串并尝试转换它,这将失败并引发异常。@LeFemur'键入1并输入'5次,或键入1并输入'5次'?因为空语句将创建异常。您只需设置断点并调试它。那么如何使它只显示总数而不必按输入?当我设置了一个限制时,为什么它会接受超过5个答案?哦,太糟糕了。你现在已经将“while(limit<6)”行更改为“while(limit<5)”。当我复制你的代码时,那里有一个6而不是5。i
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int read;
int sum = 0;
int i = 0;
Console.WriteLine("Enter 5 numbers: ");
while(i<5)
{
read = int.Parse(Console.ReadLine());
sum = sum + read;
i++;
}
Console.WriteLine("The total sum of the 5 numbers are " + sum);
}
}
}