First try-C#中十进制到二进制的代码,带有循环和列表<&燃气轮机;
我是C#方面的新手,但我曾尝试编写将十进制转换为二进制的代码,我知道还有很多其他方法,可能还有很多更简单的方法,但我只是想尝试这种方法-使用列表。有人能告诉我我做错了什么吗? 谢谢First try-C#中十进制到二进制的代码,带有循环和列表<&燃气轮机;,c#,loops,binary,C#,Loops,Binary,我是C#方面的新手,但我曾尝试编写将十进制转换为二进制的代码,我知道还有很多其他方法,可能还有很多更简单的方法,但我只是想尝试这种方法-使用列表。有人能告诉我我做错了什么吗? 谢谢 static void Main(字符串[]args) { long decimalNum=long.Parse(Console.ReadLine()); 长除数=小数位数; List BinaryResult=新列表(); for(int i=0;divideNumber==0;i++) { long divide
static void Main(字符串[]args)
{
long decimalNum=long.Parse(Console.ReadLine());
长除数=小数位数;
List BinaryResult=新列表();
for(int i=0;divideNumber==0;i++)
{
long divideBytwo=divideNumber%2;
如果(除以二==1)
{
添加(“1”);
}
如果(除以二==0)
{
添加(“0”);
}
除数/=2;
}
for(int i=0;i
是否有一种方法也可以使用整型列表或。。我完全错了吗 有几件事:
for
循环中,divideNumber==0
与您想要的相反:它表示只要divideNumber
为零,您就希望循环运行,而您真正想要的是循环运行到divideNumber
为零为止。尝试divideNumber!=0
for
循环中,如果BinaryResult
包含任何数据,您将得到一个越界异常。您正在尝试读取索引1到x
(其中x
是列表中的项数),而有效索引是0到x-1
。您可以修复索引,或者因为您正在以与创建索引相反的顺序访问元素,所以您可能会发现使用列表而不是列表更直观
如果您只需要将数字转换为二进制,请使用此选项:
int value = 8;
string binary = Convert.ToString(value, 2);
一个可能的解决方案可能是使用@Joe建议的堆栈。我还使用了字符串生成器,而不是使用字符串列表。请记住,我也在学习C#,所以我的答案可能不是最好的
static void Main(string[] args)
{
long decimalNum = long.Parse(Console.ReadLine());
StringBuilder sb = new StringBuilder();
Stack<String> BinaryResult = new Stack<string>();
while (decimalNum > 0)
{
var rem = decimalNum%2;
BinaryResult.Push(rem.ToString());
decimalNum = decimalNum/2;
}
while (BinaryResult.Count > 0)
{
sb.Append(BinaryResult.Pop().ToString());
}
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
static void Main(字符串[]args)
{
long decimalNum=long.Parse(Console.ReadLine());
StringBuilder sb=新的StringBuilder();
Stack BinaryResult=新堆栈();
while(小数点>0)
{
var rem=小数%2;
BinaryResult.Push(rem.ToString());
小数位数=小数位数/2;
}
而(BinaryResult.Count>0)
{
sb.Append(binarysult.Pop().ToString());
}
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
你为什么认为自己做错了什么?有些东西不起作用了吗?请编辑问题,提供所有必要的信息,特别是发生了什么、应该发生什么以及可能出现的错误。
static void Main(string[] args)
{
long decimalNum = long.Parse(Console.ReadLine());
StringBuilder sb = new StringBuilder();
Stack<String> BinaryResult = new Stack<string>();
while (decimalNum > 0)
{
var rem = decimalNum%2;
BinaryResult.Push(rem.ToString());
decimalNum = decimalNum/2;
}
while (BinaryResult.Count > 0)
{
sb.Append(BinaryResult.Pop().ToString());
}
Console.WriteLine(sb.ToString());
Console.ReadLine();
}