c# - C#中的浮点解析
问题描述
在 C# 中,我在 main() 中声明了一个浮点数组
float[] notas = new float[8];
在 main() 中调用方法并通过引用传递数组
PopulateArray(ref notas);
这是方法 PopulateArray(ref float[] arr1) 的实现
static void PopulateArray(ref float[] arr1)
{
bool vakid;
for (int i = 0; i < arr1.Length; i++)
{
do
{
do
{
Console.Write($"Insira nota {i + 1} ==>");
vakid = float.TryParse(Console.ReadLine(), out arr1[i]);
if ((arr1[i] > 20.0) || (arr1[i] < 0.0))
{
Console.Write("\n\n\t\tAs notas só vão de 0 a 20\n\nPrima uma tecla para continuar");
Console.ReadKey();
}
Console.Clear();
}while (!((arr1[i] <= 20) && (arr1[i] >= 0)));
} while (!vakid);
}
}
使用了两个循环,一个确保输入的值在 [0, 20] 之间,另一个确保任何输入都是十进制数(浮点数)。在此实现之前,数组notas是整数,一切正常,只允许整数,并且在 [0, 20] 的区间之间。当我决定将数据类型更改为float时,每当我输入一个十进制数(即 3.0)时,它都不会通过外循环,就像我输入一个数字以外的字符一样,方式与当我输入一个字母。那么如何输入十进制数字以存储在我的数组中?泰
解决方案
我提出了这个替代实现:
static void PopulateArray(float[] arr1)
{
for (int i = 1; i <= arr1.Length; i++)
{
float nota;
Console.Write($"Insira nota {i} ==> \n");
while(! float.TryParse(Console.ReadLine(), out nota) || nota > 20.0f || nota < 0 )
{
// Bad input message
Console.Write("\n\n\t\tAs notas só vão de 0 a 20\n\nPrima uma tecla para continuar");
}
arr1[i] = nota;
}
}
请注意,您不需要通过引用传递数组。它是一种引用类型,因此传递了引用的副本,并且该方法可以对其进行处理。
推荐阅读
- c - 如何与 If 两个字符串的值进行比较?
- pyomo - 控制模型文件中的有效位数
- node.js - 如何让用户使用带有nodejs的电子邮件和密码firebase
- c# - 未安装 Unity 项目目标框架的 Visual Studio 15
- python - 如何修复 Python Selenium 中的“in find_element_by_id return self.find_element(by=By.ID, value=id_)”错误
- excel-formula - Excel 上的条件式
- node.js - NodeJs 如何使用 moment-timezone 将 Epoch 转换为特定的 TImezone 和格式
- git - 无法连接主机服务器
- django - 根据数据的有无改变显示
- r - 无法弄清楚如何使用胆立体投影在传单 r 中绘制数据