子串outofindex

时间:2010-02-17 07:35:45

标签: c# string

我写了一个代码

如果输入23E + 20,则输出应为230000000(20个零)

如果4.456E-14是输入,那么4.456000(14个零)应该是输出

但它不能正常工作。 请让我知道我在哪里做错了。 谢谢。

using System;

class test

{

public static void Main()

{

Console.WriteLine("Enter double");

      String ext =Console.ReadLine();



           if(ext.IndexOf("E")!=-1)
        {
           int i=ext.IndexOf("E");

          ext = ext.Substring(0, i);

          for (int j = 0; j < int.Parse(ext.Substring(i + 1, ext.Length - (i + 1))); j++)

          ext = ext + "0";         

          Console.WriteLine(ext);



      }

}   

Console.ReadKey();
}
}

3 个答案:

答案 0 :(得分:0)

你可能超出字符串的范围,记得总是使用i-1索引作为大小为i的数组的最后一个字母(假设数组从0开始,这是大多数语言使用的)。 虽然这只是一个有根据的猜测,因为我不知道C#。

答案 1 :(得分:0)

这可能是解决您问题的更简单方法:

String s = Console.ReadLine();
Double d = Double.Parse(s);
Console.WriteLine(d.ToString("0.#############################################################################"));

答案 2 :(得分:0)

当你将ext子串入时 ext = ext.Substring(0,i) 你正在分配ext =“4.456”并切掉电子零件

当你在for循环中执行ext.Length - (i + 1)时,你得到一个负数索引

试试这个

int noZeroes = Int32.Parse(ext.Substring(i + 1))
ext = ext.Substring(0, i);
string zeroString = new string('0', noZeroes)

ext += zeroString;