C# 将字符串从列表c转换为浮点或双精度#
我正在尝试将字符串列表中的所有数字转换为float。我不确定为什么列表中的所有项目都是char,它将每个单个数字转换为char,而不是将数字转换为空格。下面是代码。如果第一个输入是2,它将创建2个列表,比如说C# 将字符串从列表c转换为浮点或双精度#,c#,list,type-conversion,C#,List,Type Conversion,我正在尝试将字符串列表中的所有数字转换为float。我不确定为什么列表中的所有项目都是char,它将每个单个数字转换为char,而不是将数字转换为空格。下面是代码。如果第一个输入是2,它将创建2个列表,比如说12333和22344 从列表1中,我需要mm成为12/23/33而不是1/2/2/3/3 int nrMagazine = Convert.ToInt32(Console.ReadLine()); List<String> mag = new List<String&g
12333
和22344
从列表1中,我需要mm
成为12/23/33
而不是1/2/2/3/3
int nrMagazine = Convert.ToInt32(Console.ReadLine());
List<String> mag = new List<String>();
string prop = "";
for(int i = 0; i < nrMagazine;i++)
{
string profitTrimestre = Console.ReadLine();
profitTrimestre.Split();
mag.Add(profitTrimestre);
//cel mai profitabil trimestru,trimestru 1 = m[0],1=m[1]
//cel mai profitabil magazin,mag 1,2,3,4,n
}
foreach(string m in mag)
{
foreach(string mm in m)
{
Console.WriteLine(mm);
}
}
int nrMagazine=Convert.ToInt32(Console.ReadLine());
List mag=新列表();
字符串prop=“”;
对于(int i=0;i
也许您只需要在空格上拆分行,并实际将拆分值指定给mag
string[] mag = profitTrimestre.Split(' ');
然后,您应该能够使用一个foreach循环该列表中的每个字符串:
foreach(string m in mag)
{
Console.WriteLine(m);
}
如果要将单个字符串部分转换为双精度,可以按如下方式执行:
double d = double.Parse(m);
如果要避免字符串不是有效的双精度表示形式时出现异常,也可以这样做:
double.TryParse(m, out double d);
当前代码中存在多个问题 我不知道为什么列表中的所有项目都是字符 因为您有另一个字符串循环,它隐式地使用枚举器按字符迭代字符串。您应该能够使用
convert
class将其转换为float:
foreach(string m in mag)
{
var number = Convert.ToDouble(m);
}
其次,如果数字以空格分隔,则使用Split
重载,该重载使用字符进行拆分:
var splitted = profitTrimestre.Split(new char[]{' '}, StringSplitOption.RemoveEmptyEntries);
然后循环:
foreach(var item in splitted)
mag.Add(item);
你可以试试这个
public static void Main(string[] args)
{
var text = Console.ReadLine();
var strings = text.Split(' '); // This splits the 11 22 33 to three string values.
var numbers = strings.Select(a =>
{
if (float.TryParse(a, out float number))
return number;
return 0;
}).ToList(); // This converts 3 strings to 3 float
}
或者您可以尝试最短版本(感谢Prasad Telkikar)
profitTrimestre.Split()
将返回一个数组,而当前您对该数组不做任何操作。请尝试改为:
Console.WriteLine("Insert the number of lists: ");
if(int.TryParse(Console.ReadLine(),out int nrMagazine)) //Never trust user's inputs
{
List<string> mag = new List<string>();
for(int i = 0; i < nrMagazine;i++)
{
Console.WriteLine($"Insert List {i+1}: ");
mag.Add(Console.ReadLine());
}
foreach(string m in mag) //iterates over each input string
{
foreach(string mm in m.Split(' ')) //splits each entry and iterates over the itens
{
Console.WriteLine(mm);
if(double.TryParse(mm, out double myDouble)) //You can also pass a Culture
{
//Do something with your double
}
else
{
//Input not a double in the current culture
}
}
}
}
else
{
Console.WriteLine("The input was not an integer");
}
Console.WriteLine(“插入列表数量:”);
if(int.TryParse(Console.ReadLine(),out int nrMagazine))//从不信任用户的输入
{
List mag=新列表();
对于(int i=0;i
我想这就是你需要的
Dictionary<int, IEnumerable<float>> nrMagazine = new Dictionary<int, IEnumerable<float>>(); //creates dictionary
int.TryParse(Console.ReadLine(), out int x); //input number for iterations here
for (int i = 0; i < x; i++)
{
nrMagazine.Add(i, Console.ReadLine().Split(' ').Select(s => { float.TryParse(s, out float y); return y; })); //builds floats list and adds it to dictionary x times
}
nrMagazine.Keys.ToList().ForEach((i) => Console.WriteLine("Magazine: " + i + ", Profits: " + String.Join(", ", nrMagazine[i]))); //prints items from dictionary
Dictionary=newdictionary()//创建字典
int.TryParse(Console.ReadLine(),out int x)//在此处输入迭代次数
对于(int i=0;i{float.TryParse(s,out float y);返回y;});//构建float列表并将其添加到字典x次
}
nrMagazine.Keys.ToList().ForEach((i)=>Console.WriteLine(“杂志:+i+”,利润:+String.Join(“,”,nrMagazine[i]))//从字典中打印项目
您只需要1个foreach,它将与列表iTen交互m
已经是一个字符串,因此第二个foreach
正在迭代该字符串的字符。也profitTrimestre.Split()
返回您正在划分的数组,profitTrimestre
是用户输入的数组。Convert.ToInt32(Console.ReadLine())
-这只是一个等待发生的异常。永远不要相信用户输入!。改为使用int.TryParse
。问题是用户将输入4个由1个空格分隔的浮点数,输入不必是字符串?一行如何Array.ConvertAll(text.Split(“”),x=>float.TryParse(x,out float number)?number:0.ToList()
Dictionary<int, IEnumerable<float>> nrMagazine = new Dictionary<int, IEnumerable<float>>(); //creates dictionary
int.TryParse(Console.ReadLine(), out int x); //input number for iterations here
for (int i = 0; i < x; i++)
{
nrMagazine.Add(i, Console.ReadLine().Split(' ').Select(s => { float.TryParse(s, out float y); return y; })); //builds floats list and adds it to dictionary x times
}
nrMagazine.Keys.ToList().ForEach((i) => Console.WriteLine("Magazine: " + i + ", Profits: " + String.Join(", ", nrMagazine[i]))); //prints items from dictionary