none
索引在陣列之外的問題 C# RRS feed

  • 問題

  • 我寫了一個程式 , 它在輸入資料執行完後跳出 " 索引在陣列之外 "的警告 , 請問這行程式碼要如何修改呢 ? 謝謝

     1. 輸入人數  2.之後輸入全部姓名  3.輸入全體的薪水  4. 顯示全體員工姓名與薪水                                                    
    namespace ConsoleApplication2
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                
                
                int n;
                Console.WriteLine("請輸入人數");
                n = int.Parse(Console.ReadLine());
                
    
                String[] name = new String[ n];
                for (int k = 1; k <= name.Length; k++) 
                {
                    Console.Write("請輸入第{0}個同學姓名:", k); 
                    name[k - 1] = Console.ReadLine();  
                }
                Console.WriteLine("==================");
            
                int[] salary = new int[n];
                for(int i =1;i<=salary.Length;i++)
                {
                    Console.Write("請輸入第{0}個同學薪水:", i); 
                    salary[i - 1] = int.Parse (Console.ReadLine()); 
                }
                Console.WriteLine();
                for(int i =0; i <= n; i++ )
                
                    {
                        Console.WriteLine("{0}薪水為{1}", name[i], salary[i].ToString ("0,0"));  // 這裡出現 索引在陣列的界線之外 錯誤
                    }
                
                    Console.Read();
            }
        }
    }
    



    2015年10月18日 上午 11:14

解答

  • C# 陣列宣告的是"容量", 不是上限索引值, 比方你宣告 new string[n], 表示這個陣列的索引值是從 0 ~n-1 .

    所以迴圈要用  i < n , 而不是 i <= n


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年10月18日 下午 12:50
    版主
  • 最後一個迴圈應該是

    for (int i=0; i<n; i++)

    才對。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年10月18日 下午 02:59
    版主

所有回覆

  • C# 陣列宣告的是"容量", 不是上限索引值, 比方你宣告 new string[n], 表示這個陣列的索引值是從 0 ~n-1 .

    所以迴圈要用  i < n , 而不是 i <= n


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年10月18日 下午 12:50
    版主
  • 陣列是以零為起始索引,即包含 n 個元素的陣列建立索引時,會從 0 開始,一直到 n-1 為止。

    可以參考:陣列 (C# 程式設計手冊)

    • 已編輯 Jerry C.C 2015年10月18日 下午 02:37
    2015年10月18日 下午 02:30
  • 最後一個迴圈應該是

    for (int i=0; i<n; i++)

    才對。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年10月18日 下午 02:59
    版主
  • 感謝上面幾位前輩的回答 !! 解決了我的問題 !!
    2015年10月19日 上午 12:32