2011-12-09 2 views
1

メソッド呼び出しがRows (4)の場合、メソッドは4つの空白行を出力するように、行のメソッドが必要です。C#メソッド行プログラム

これは私のコードですが、うまくいかないことを教えてください。

namespace something 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     Console.Write("give number: "); 
     int lines = int.Parse(Console.ReadLine()); 
     line(lines); 
     Console.WriteLine("lines end"); 
     Console.ReadKey(); 
    } 

    private static void line(int lines) 
    { 
     for (int i = 1; i <= lines; i++); 
     Console.WriteLine(" "); 
    } 
    } 
} 
+0

出力は何ですか? –

答えて

4

終わり;を削除します。この場合、

for (int i = 1; i <= lines; i++); 
           ^

をループが終わった後、あなたのConsole.WriteLine(" ");は一度だけ呼ばれます。何もしないループ。

+0

ありがとう、今は動作します – coodienoobie

+3

なぜこのタイプのエラーとして必要でないときでも、常に関数ブロック区切り記号{と}を追加するのが最も簡単です。 – ChrisBD

1
for (int i = 1; i <= lines; i++); // note the semicolon! 
    Console.WriteLine(" "); 

for (int i = 1; i <= lines; i++) 
    Console.WriteLine(" "); 

コロンは独自の権利で空の命令であるべき。だから基本的にあなたのプログラムは空の命令n回(実際には 'lines' times)を実行していました。

興味深いことに、行を角かっこで囲むと、Possible mistaken empty statementコンパイラの警告が表示されるだけです。

何が原因であれ、単一の命令で構成されるコードブロックであっても、かっこを使用するもう1つの理由が考えられます。

したがって、私は推薦する:

for (int i = 1; i <= lines; i++) 
{ 
    Console.WriteLine(" "); 
} 
0

句のためのあなたの終わりにセミコロンが問題です。あなたのループは何もしていません。

for (int i = 1; i <= lines; i++) 
    Console.WriteLine(" "); 
0

まず第一に、あなたは数であるように、ユーザー入力をチェックし、そうでない場合は、エラーメッセージが表示されるはずです。そのようなコードは、ユーザーがintに解析できないものを入力した場合に例外をスローします。

次に、forの最後にセミコロンがあります。コンパイラのエラーです。実行しようとしたときにすでに気づいたと思います。

それ以外は、正確には機能しません。あなたの "行"メソッドは、行ではなく、すべての番号に対して空白を表示します。空白行を印刷する場合は、Environment.NewLineを使用してください。

+0

'あなたの"行 "メソッドは、行ではなく、数字ごとに空白を表示します。" - あなたは間違っています。 'Console.WriteLine'は' Console.Write'と同じではありません。 'WriteLine'は、文字列の最後に改行を自動的に挿入します。また、セミコロンは、コンパイラエラー、警告だけでなく、(私の答えで述べたように)常にではありません。 –

+0

あなたは正しいですが、私は "書き込み"のためにそれを誤解しています。まあ、nvm :) –

+0

私は誰も 'コンソール'を頻繁に使っているとは思わない(宿題やクイックなサニティチェック以外の);) –

関連する問題