2016-10-01 61 views
0

我正在嘗試編寫一個程序,該程序需要10個輸入並按相反順序打印它們。這是我在C#代碼:獲得10個數字並以相反順序打印它們的程序

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

namespace inverse 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     int i ; 
     int[] n = new int[10]; 
     Console.WriteLine("please enter 10 numbers"); 
     for (i = 1; i <= 10; i++) 
      n[i] =int.Parse(Console.ReadLine()); 
     for (i = 10; i >= 1; i--) 
     Console.WriteLine(n[i] + " "); 
     Console.ReadKey(); 
    } 
    } 
} 

它沒有得到任何錯誤,但它也不起作用,當我試圖調試它。你可以幫我嗎?


+0

怎麼了不起作用?你沒有得到提示?他們打印,但沒有順序? –

+1

請不要在「stackoverflow」中聲明「它不起作用」。這不是對問題的描述。準確地解釋你預期會發生什麼,而恰恰是發生了什麼。有一個錯誤,***說出來。***此外,「當我試圖調試它不起作用」沒有任何意義。我們正是因爲它們不起作用而調試東西。也許你對「調試」這個術語的含義感到困惑? –

回答

1

你應該改變你的第二個for循環:

for (i = 9; i >= 0; i--) 

爲什麼?

因爲在你不正確的循環,i開始於10.在每次迭代,它遞減,直到i >= 1。換句話說,i的值從10變爲1.

但是,這不是數組的工作方式,是嗎? C#中的數組是基於0的,這意味着第一個項目位於索引0,最後一個項目位於索引處(長度爲1)。在這個特定的情況下,最後一項將在索引9(10 - 1 = 9)!

當您嘗試訪問索引10處的項目時,它當然會拋出一個異常,因爲該數組在索引9處結束!此外,即使索引爲10的項目,數組的第一項也不會被打印,因爲循環停止在i = 1

這就是爲什麼你要i的價值去從9至0,而不是10:1

編輯:

我才意識到你做另一個錯誤,你的第一個for循環是不正確的好。它應該循環從0到9,而不是1到10。這是正確的版本:

for (int i = 0 ; i <= 9, i++) 

或者,而不是改變環路的頭,你可以添加- 1

for (i = 1; i <= 10; i++) 
    n[i - 1] =int.Parse(Console.ReadLine()); 
for (i = 10; i >= 1; i--) 
    Console.WriteLine(n[i - 1] + " "); 
+0

我想,在最大的編程語言中,數組從0開始。 –

+0

非常感謝你的幫助 –

0

使用以下代碼:

static void Main(string[] args) 
{ 
    int i; 
    int[] n = new int[11]; 
    Console.WriteLine("please enter 10 numbers"); 
    for (i = 1; i <= 10; i++) 
     n[i] = Convert.ToInt32((Console.ReadLine())); 
    for (i = 10; i >= 1; i--) 
    Console.WriteLine(n[i] + " "); 
    Console.ReadKey(); 
} 

問題是數組索引超出範圍作爲數組從0開始時就放棄了10個輸入它給了我錯誤。

+0

非常感謝你 –

1

你需要從0開始到9反之亦然

for (i = 0; i <= 9 i++) 
     n[i] =int.Parse(Console.ReadLine()); 
for (i = 9; i >= 0; i--) 
     Console.WriteLine(n[i]); 
+0

非常感謝你 –

相關問題