2017-02-01 1 views
0

Ich habe ein Problem mit einem Programm, das ich geschrieben habe. Es fragt nach dem Radius eines Kreises und berechnet dann den Durchmesser des Kreises und druckt auch die ungefähre Form entsprechend der gegebenen Information (es druckt als ein Diamant, aber das ist nicht was ausmacht).Immer wenn eine Form mit dem gegenüberliegenden Dezimaltrennzeichen gedruckt wird, wird der Druck verrückt

Jetzt, wenn ich eine Nummer mit einem Radius wie 5,55 oder 6,66 eingeben, wird es auf Hunderte von Seiten gedruckt. Wenn ich 5,55 oder 6,66 verwende, druckt es gut, weil es mein Dezimaltrennzeichen ist.

Wie kann ich es so in meinem Code machen, dass, wenn ich eine Zahl einschließe, egal mit welchem ​​Trennzeichen, es den Radius und den Durchmesser usw. mit einem Komma anzeigt?

Also wenn ich den Radius als 5,55 eingeben sollte, zeigt das Programm, dass die Eingabe 5,55 war.

Ich habe jeden Faden in Bezug auf dieses Problem gesucht, aber ich bin nicht in der Lage, dies zu beheben mit meinem Code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 

namespace ConsoleApplication42 
{ 
    class Program 
    { 
     private static void circle() 
     { 

     Console.ForegroundColor = ConsoleColor.Green; 
     Console.WriteLine("Enter the radius of the circle"); 
     double circle = double.Parse(Console.ReadLine()); 
     double circleRadius = 2 * circle; 
     Console.WriteLine("Circle's diameter is: " +circleRadius + ""); 


     double i, k, count = 1; 
     count = circle - 1; 
     for (k = 1; k <= circle; k++) 
     { 
      for (i = 1; i <= count; i++) 
       Console.Write(" "); 
      count--; 
      for (i = 1; i <= 2 * k - 1; i++) 
       Console.Write("$"); 
      Console.WriteLine(); 
     } 
     count = 1; 
     for (k = 1; k <= circle - 1; k++) 
     { 
      for (i = 1; i <= count; i++) 
       Console.Write(" "); 
      count++; 
      for (i = 1; i <= 2 * (circle - k) - 1; i++) 
       Console.Write("$"); 
      Console.WriteLine(); 


     } 


     Console.ReadKey(); 
    } 


    static void Main(string[] args) 
    { 
    Start: 
     { 

      Console.Clear(); 
      Console.Title = "Shape"; 
      Console.ForegroundColor = ConsoleColor.Green; 
      Console.WriteLine("Press number 1 and hit ENTER"); 
      Console.ResetColor(); 

      string tehe = Console.ReadLine(); 

      switch (tehe) 

      { 
       case "1": 
        circle(); 
        break; 

       default: 
        Console.WriteLine("No such option"); 
        break; 
       case "'": 
        Environment.Exit(1); 
        break; 



      } 

     } 
     Console.ReadKey(); 
     goto Start; 
    } 
} 
} 
+0

Ich bin neugierig, warum Sie beides akzeptieren wollen. Sie können dem Benutzer entweder das gewünschte Format mitteilen oder das aktuelle Gebietsschema für den Ort verwenden, an dem die App ausgeführt wird, und dann einfach Zahlen in dem für sie natürlichen Format eingeben. Der Versuch, beide zu akzeptieren, wird Probleme haben, wenn ich 1,234 eingeben sollte, sollte das eine Dezimalzahl zwischen eins und zwei sein, oder sollte das eine ganze Zahl zu Tausenden sein? Sie müssen entweder in der Lage sein, diese Frage zu beantworten, damit Sie sie richtig codieren können, oder Sie müssen den Benutzer genau angeben lassen, was er meint. – Chris

Antwort

0

Eine Option ist keine Kommas Dezimalstellen zu ändern und CultureInfo.InvariantCulture verwenden, wenn das Parsen:

Das einzige Risiko ist, wenn jemand 1,234.56 als eine Eingabe eingibt, die eine gültige double ist, würde aber in diesem Fall fehlschlagen.

Eine sicherere Methode wäre anzugeben, dass Zahlen Dezimalstellen verwenden und CultureInfo.InvariantCulture verwenden, ohne Kommas zu ersetzen.

Verwandte Themen