2014-09-18 28 views
0

我收到錯誤Invalid Expression Term 'sbyte'」無效的表達式字節'sbyte'「

我對代碼很陌生,不完全確定我做錯了什麼。在從String更改變量後,我得到錯誤,因爲數字將被輸入到行中,然後在代碼中使用。

爲什麼我會收到錯誤?


String Name = ""; 
String Team1 = ""; 
String Team2 = ""; 
String Team3 = ""; 
String Team4 = ""; 
sbyte Score1 = 0; 
sbyte Score2 = 0; 
sbyte Score3 = 0; 
sbyte Score4 = 0; 
String Winner1 = ""; 
String Winner2 = ""; 

Console.WriteLine("What's your name?"); 
Name = Console.ReadLine(); 
Console.WriteLine("Hello " + Name + ", enter the names of the 4 teams you want to see play below."); 
Team1 = Console.ReadLine(); 
Team2 = Console.ReadLine(); 
Team3 = Console.ReadLine(); 
Team4 = Console.ReadLine(); 
Console.WriteLine("Ok, Here are todays matches"); 
Console.WriteLine("___________________________"); 
Console.WriteLine(); 
Console.WriteLine(Team1 + " vs " + Team2); 
Console.WriteLine(); 
Console.WriteLine(Team3 + " vs " + Team4); 
Console.WriteLine(); 
Console.WriteLine("___________________________"); 
Console.WriteLine(); 
Console.WriteLine("How many goals did " + Team1 + " Score?"); 
Score1 = sbyte (Console.ReadLine()); 
Console.WriteLine("How many goals did " + Team2 + " Score?"); 
Score2 = sbyte (Console.ReadLine()); 
Console.WriteLine("How many goals did " + Team3 + " Score?"); 
Score3 = sbyte (Console.ReadLine()); 
Console.WriteLine("How many goals did " + Team4 + " Score?"); 
Score4 = sbyte (Console.ReadLine()); 
+1

Score1 = sbyte.Parse(Console.ReadLine()); – 2014-09-18 18:57:48

回答

3

的問題是在這裏:

Score1 = sbyte (Console.ReadLine()); 

到Console.ReadLine()返回一個字符串。您需要將其轉換爲有符號的字節。您編寫的代碼不正確,因此無法編譯。

您可以使用方法SByte.Parse或更強大的SByte.TryParse來實現此目的。你寫的代碼看起來像一個企圖直接投,這將適當地寫

Score1 = (sbyte)Console.ReadLine(); 

這將在運行時失敗,但是,因爲它是不可能直接投一個字符串轉換爲數值型。

你也很好地閱讀命名約定。局部變量通常以小寫字母開頭,如下所示:

String name = ""; 
String team1 = ""; 
sbyte score1 = 0; 
2

您似乎試圖使用轉換將字符串轉換爲其sbyte表示形式。這是行不通的。 (幾乎看起來你正在嘗試用C++語法來構造一個類型,但這也不起作用)。

相反,看Byte.Parse()(或爲SByte當量):

http://msdn.microsoft.com/en-us/library/k0s9b1y3(v=vs.110).aspx

string s = Console.ReadLine(); 
sbyte b = SByte.Parse(s); 
Console.WriteLine("sbyte '{0}'", b); 

解析將拋出一個異常,如果格式不正確,所以使用try/catch塊。否則,TryParse()不會引發異常,而只是檢查返回值。

更多樣本的位置:

http://msdn.microsoft.com/en-us/library/xbtzcc4w(v=vs.110).aspx

1

您可以將變量轉換三種方式。

//Method 1 
sbyte one = sbyte.Parse(Console.ReadLine()); 

//method two 
sbyte two = null; 
sbyte.TryParse(Console.ReadLine(),two); 

//method three 
sbyte three = Convert.ToSByte(Console.ReadLine()); 

這三者中的任何一個都適合你。