2010-02-17 7 views
1

I a écrit un code pour lequelSubstring outofindex

si 23E + 20 est l'entrée puis la sortie doit être 230000000 (20 zéros)

si 4.456E-14 est l'entrée puis 4.456000 (14 zéros) devrait être la sortie

Mais cela ne fonctionne pas correctement. S'il vous plaît laissez-moi savoir où j'ai fait erreur. Merci.

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(); 
} 
} 
+1

La sortie pour 4.456E-14 n'est pas 4.456000 (14 zéros). –

Répondre

0

Lorsque vous substring poste dans ext = ext.Substring (0, i) vous assignez ext = "4.456" et coupant la e-partie

quand vous ext.Length - (i + 1) dans la boucle, vous obtenez un indice négatif

Essayez cette place

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

ext += zeroString; 
0

Vous allez probablement en dehors des limites de la chaîne, rappelez-vous toujours utiliser l'index i-1 pour la dernière lettre de tableau de taille i (en supposant des réseaux qui commencent à 0 qui est ce que la plupart des langues utilisent). Bien que ce soit juste une supposition éclairée que je ne connais pas C#.

+1

Aussi la boucle for plus le if (ext.Substring (i, 1) == "E") semble bizarre n'est pas là une fonction de chaîne standard qui renvoie le début d'une correspondance d'une sous-chaîne? –

+0

ya, je sais, Array ou chaîne, leur index commence à partir de zéro. C'est pourquoi j'ai écrit i Gokul

+1

oui, y a-t-il, IndexOf – Gokul

0

Cela pourrait être une solution plus simple à votre problème:

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