2013-01-18 48 views
1

這是我第一次使用C#和ASP.NET,我正在閱讀從C#2010開始ASP.NET 4,但我從來沒有使用過面向對象的編程。 (我是網絡管理員,所以我知道基本的編程)。簡單的程序不工作

不過,我不能去上班一個簡單的程序

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace ConsoleApplication2 { 
    class Program { 
     static void Main(string[] args) { 
      int i; 
      string[] nomi = new string[7]; 
      string[] cognomi = new string[7]; 
      for (i = 0; i = 6; i++) { 
       Console.WriteLine("Inserisci il", i + 1, "° nome"); 
       nomi[i] = (Console.ReadLine); 
      } 

      for (i = 0; i = 6; i++) { 

       Console.WriteLine("Inserisci il", i + 1, "° cognome"); 
       nomi[i] = (Console.ReadLine); 
      } 

      for (i = 0; i = 6; i++) { 
       Console.WriteLine(nomi[i], " ", cognomi[i]); 
      } 
     } 
    } 
} 

的問題是不是在algorythm但在聲明部分。我無法顯示錯誤日誌,因爲我有VS意大利語。

我在哪裏錯了?

+0

改變你的'(Console.ReadLine);'s到'Console.ReadLine();'。實際上,你正試圖將一個函數delegate(不是'string')分配給'string'數組中的一個位置。你想從控制檯實際得到一個字符串,所以你需要*調用*函數。更改後,控制檯應等待您輸入內容並在繼續之前按回車。 –

+0

哈哈,如果從書上的代碼把它扔垃圾 –

+0

**注意:**當你寫信給'cognomi [i]'時,你正在給'nomi [i]'寫信給你的第二個循環。 –

回答

4

這很難幫助沒有錯誤信息(也許你可以翻譯他們,因爲你顯然知道這兩種語言)。

當然,您的for循環語法不正確。這:

for (i = 0; i = 6; i++) 

應該是:

for (i = 0; i < 6; i++) // Or <=, or whatever 

for loop documentation on MSDN看看。

此外Console.ReadLineis a method, not a property

nomi[i] = Console.ReadLine(); 
+0

http://msdn.microsoft.com/en-en/library/s35hcfh7(v=vs.80).aspx 這是 – Fonzusys

0

您的循環不作任何意義for (i = 0; i = 6; i++)

語法for (initialization, condition, iteration)

現在你的條件是分配,所以它總是將是真實的。我想你想成爲for (i = 0; i **<** 6; i++)

1

您的for環路不正確。他們應該

for (int i = 0; i < 7; i++) 
{ 
} 

或者,更好,

for (int i = 0; i < nomi.Length; i++) 
{ 
} 

這是什麼要說的是,i應該0開始,不斷循環,直到值,如果i不再小於7(或價值的nomi.Length)和i應增加1每個循環(i++)。

此外,與循環無關,它應該是Console.ReadLine();()顯示這是一種不採用參數的方法,而nomi.Length沒有(),因爲它是property而不是method

你的數組也需要是靜態的。

static string[] nomi = new string[7]; 
static string[] cognomi = new string[7]; 

只是爲了澄清,你並不總是需要聲明變量時使用static。你在這裏需要的原因是你從一個靜態方法中調用它們(static void Main(string[] args))。

編輯 - 正如在評論中提到的那樣,這假設變量正在被Main方法超出,導致錯誤An object reference is required for the nonstatic field, method, or property 'member'。如果他們不是,那麼這些變量不一定是靜態的。

+0

你不能聲明的方法內部靜態變量的錯誤之一。 – Romoku

+0

是的,你就在那裏。然而,根據OP的錯誤信息('對象引用對非靜態字段,方法或屬性'member''是必需的),我猜他們複製的代碼是錯誤的,並且實際上在方法外聲明瞭這些變量。 – keyboardP

0

當循環寫,你應該總是讓一個int變量中的申報範圍爲循環

例子:

for (int i = 0; i < 10; i++) 
{ 
    body code goes here 
} 

有整數應申報並的範圍內消失循環。

希望幫助

0

我糾正你的forConsole.WriteLine語法和使你的代碼更易讀。這應該能夠引導你。

const int length = 7; 
string[] nomi = new string[length]; 
string[] cognomi = new string[length]; 

for (int i = 0; i < length; i++) 
{ 
    Console.WriteLine("Inserisci il {0} ° nome", i + 1); 
    nomi[i] = (Console.ReadLine()); 
} 

for (int i = 0; i < length; i++) 
{ 
    Console.WriteLine("Inserisci il {0} ° cognome", i + 1); 
    cognomi[i] = (Console.ReadLine()); 
} 

for (int i = 0; i < length; i++) 
{ 
    Console.WriteLine("nomi: {0} cogomi: {1}", nomi[i], cognomi[i]); 
} 
+0

變量聲明需要是靜態的。 – keyboardP

+0

@keyboardP爲什麼?它們是方法內部的堆棧變量,不能將堆棧變量設置爲static。 – Romoku

+0

因爲OP的錯誤信息意味着它們被聲明在方法之外('非靜態字段,方法或屬性'member'需要一個對象引用)。我猜這意味着代碼在問題中被錯誤地複製了,但我可能會錯過其他的東西。 – keyboardP