2016-09-13 6 views
-1

私の最初のプロジェクツの1つであり、デンマークの初心者の本からコピーされたものでも、私はダブルチェックされたserval時間を持っています。エラーとなる。"入力文字列が正しいフォーマットではありません"

using System; 

namespace Amount_and_price 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("Write the price here "); 
      String text = Console.ReadLine(); 
      double price = Convert.ToDouble(text); 
      Console.WriteLine("Write the amount here "); 
      text = Console.ReadLine(); 
      int quantity = Convert.ToInt32(text); 
      double amount = price * quantity; 
      double vat = amount * 0.25; 
      double total = amount + vat; 
      Console.WriteLine("{0, -15} { 1, 10:F}", "Pris på varen", price); 
      Console.WriteLine("{0, -15} { 1, 10:D}", "Antal styk", quantity); 
      Console.WriteLine("{0, -15} { 1, 10:F}", "Pris eks. moms", amount); 
      Console.WriteLine("{0, -15} { 1, 10:F}", "Moms", vat); 
      Console.WriteLine("{0 -15} { 1, 10:F}", "Total pris, inkl. moms", total); 

     } 
    } 
} 

「入力文字列が正しい形式ではありません」というエラーが表示されないように変更する必要はありますか?

+2

エラーはどこに表示されますか?私はそれが 'Convert.ToDouble' – Alex

+1

または' Convert.ToInt32(テキスト)であると思います ' – Natrium

+0

たライン上では、例外を得るのですか? – Natrium

答えて

3

あなたConsole.WriteLine文で開きブレースと引数の数との間にスペースを入れることはできません。この変更ですべてのConsole.WriteLineステートメントを変更する必要があります。 @Berkay

で指摘したように、以下の説明の行が

間違ったコードに

Console.WriteLine("{0, -15} { 1, 10:F}", "Pris på varen", price); 

右コード

Console.WriteLine("{0,-15} {1,10:F}", "Pris på varen", price); 

を変更を説明することである。また、あなたの最後のConsole.WriteLine文は不足しているカンマを(持っています

間違ったコード

Console.WriteLine("{0 -15} {1, 10:F}", "Total pris, inkl. moms", total); 

右のコード

Console.WriteLine("{0,-15} {1,10:F}", "Total pris, inkl. moms", total); 
+0

また、最後の 'Console.WriteLine'には**"、 "**がありません。 – Berkay

+0

編集:それは、すべての後に動作しました。そしてもう一度ありがとう! –

+0

ありがとう@Berkay私はその変更で答えを更新しました – Vikhram

-1

あなたは、コード内のいくつかの構文エラーを持っていました。最後のConsole.WriteLineメソッド呼び出しは文字列フォーマット構造を使用していますが、string.Format()がありません。さらに、最後の行には、最初のかっこの数値の間にカンマがありません。とにかく、ここで修正されたコードです:

 Console.WriteLine("Write the price here "); 
     string text = Console.ReadLine(); 
     double price = Convert.ToDouble(text); 
     Console.WriteLine("Write the amount here "); 
     text = Console.ReadLine(); 
     int quantity = Convert.ToInt32(text); 
     double amount = price * quantity; 
     double vat = amount * 0.25; 
     double total = amount + vat; 
     Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Pris på varen", price)); 
     Console.WriteLine(string.Format("{0, -15} {1, 10:D}", "Antal styk", quantity)); 
     Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Pris eks. moms", amount)); 
     Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Moms", vat)); 
     Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Total pris, inkl. moms", total)); 
     Console.Read(); 
+1

私はそれを "構文エラー"と呼ぶことはできないと思います。構文エラーは、プログラムを正常にコンパイルできないエラーです。基本的に、OPはランタイムエラーの原因となったいくつかのステートメントを書きました。 – progyammer

+0

WriteLineには、フォーマット文字列とparamsを受け入れるオーバーロードがあります。 – rene

+1

また、['Console.WriteLine(String、params Object [])'](https://msdn.microsoft.com/en-us/library/828t9b9h(v = vs.110).aspx)メソッドがオーバーロードされています'String.Format()'フォーマット文字列を理解しています。 – Phylogenesis

0

スペース、必要な場合に不足しているコンマ。 https://dotnetfiddle.net/z8q1heを共有することができます。人々があなたのコードで遊ぶのは簡単でしょう。たくさんのテストをせずに

public static void Main(string[] args) 
    { 
     Console.WriteLine("Write the price here "); 
     String text = Console.ReadLine(); 
     double price = Convert.ToDouble(text); 
     Console.WriteLine("Write the amount here "); 
     text = Console.ReadLine(); 
     int quantity = Convert.ToInt32(text); 
     double amount = price * quantity; 
     double vat = amount * 0.25; 
     double total = amount + vat; 
     Console.WriteLine("{0, -15} {1, 10:F}", "Pris pa varen", price); 
     Console.WriteLine("{0, -15} {1, 10:D}", "Antal styk", quantity); 
     Console.WriteLine("{0, -15} {1, 10:F}", "Pris eks. moms", amount); 
     Console.WriteLine("{0, -15} {1, 10:F}", "Moms", vat); 
     Console.WriteLine("{0, -15} {1, 10:F}", "Total pris inkl. moms", total); 

} 
0

、私はライン言う: ダブル価格= Convert.ToDouble(テキスト)。 も危険です。コンマやピリオドが小数点の区切り文字として使用されているかどうかを知るのは難しいでしょう。正確なエラーが出るので、intを使用してみてください。違いがある場合はカンマとピリオドの両方を試してみてください... スレッドの文化を設定して処理することを検討してください。

関連する問題