Подстрока вне индекса - PullRequest
       5

Подстрока вне индекса

1 голос
/ 17 февраля 2010

Я написал код, для которого

если 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 голосов
/ 17 февраля 2010

Возможно, это более простое решение вашей проблемы:

String s = Console.ReadLine();
Double d = Double.Parse(s);
Console.WriteLine(d.ToString("0.#############################################################################"));
0 голосов
/ 17 февраля 2010

Когда вы вставляете ext в ext = ext.Substring (0, i) Вы назначаете ext = "4.456" и обрезаете электронную часть

при выполнении ext.Length - (i + 1) в цикле for вы получаете отрицательный индекс

Попробуйте вместо этого

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

ext += zeroString;
0 голосов
/ 17 февраля 2010

Возможно, вы выходите за пределы строки, помните, что всегда используйте индекс i-1 для последней буквы массива размера i (при условии, что массивы начинаются с 0, что используется большинством языков). Хотя это просто обоснованное предположение, поскольку я не знаю C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...