2

タイトルにエラーが表示されます。コードの何が問題になっていますか? 構文エラーだと思いますが、エラーが実際に何を意味するのかについての情報があまりないため、わかりません。

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

namespace ConsoleApplication2
{

class Program
{

    static void Main(string[] args)
    {

        Console.WriteLine("Please Input Number of Rows you want to make in your pyrimid: ");

        int num = int.Parse(Console.Read()); // error here

        Console.WriteLine(num);// Just to check if it is getting the right number
        Console.Read();//This is Here just so the console window doesn't close when the program runs

    }
}
}

編集:

明確にするために、ユーザーから番号を取得して、ユーザーが入力した番号を出力するだけのコードが必要です。

4

4 に答える 4

8

int.Parseパラメータとして文字列を受け入れます。Console.ReadLine()ユーザーから文字列を取得し、それをに渡すために使用しますint.Parse

int num = int.Parse(Console.ReadLine());

FormatExceptionユーザーが として認識できない何かを入力すると、これがスローされることに注意してくださいint。ユーザーが適切な数値を入力するかどうかわからない場合 (私は常にそうではありません)、 を使用しますTryParse。例を以下に示します

int value;

if (int.TryParse(Console.ReadLine(), out value))
    Console.WriteLine("parsed number as: {0}", value);
else
    Console.WriteLine("incorrect number format");
于 2013-03-29T13:01:42.670 に答える
1

問題は、Console.Read() が int を返しますが、int.Parse は文字列を期待していることです。単純に次のように変更します

int num =Console.Read();
于 2013-03-29T13:01:56.673 に答える
1

Console.Read()とアスキー

これは、実際には a ではなくConsole.Read()and を返すために発生しています。押されたキーのASCIIコードを返します。それをcharに変換してから文字列に変換してから解析する必要があります。intstring

var val = int.Parse(((char)Console.Read()).ToString());

Console.Read()あなたが考えている形式で整数を返さないことに注意してください。値は、押した文字ではなくキーコード0であるため、9実際に出力され60ます。70

ここでASCIIテーブルを参照してください

Console.ReadLine()

別のおそらくより良い解決策はConsole.ReadLine()、 which を返すを使用することですstring

var val = int.Parse(Console.ReadLine());

警告

int.Parse()提供された文字列が数値でない場合は例外がスローされるため、使用するときは常に注意する必要があります。より良いオプションはint.TryParse()、引数を与える whichを使用することですout。これは、解析が成功したかどうかを返します。

string text = Console.ReadLine();
int val;
if (int.TryParse(text, out val))
{
    // It is a number
}
{
    // It is not a number
}
于 2013-03-29T13:02:58.293 に答える
0

あなたがそれを得ている理由は、 Console.Read が int を返すためです

http://msdn.microsoft.com/en-us/library/system.console.read.aspx

また、int を解析することはできません。文字列のみを解析できます。

おそらく、文字列を返す Console.ReadLine が必要です。

于 2013-03-29T13:02:21.757 に答える