2014-01-27 174 views
2

所以我幾乎完成了我的程序,但是我一直收到減法運算符的這個錯誤。我已經搜遍了我的書和互聯網,但是無法找到解決辦法。有人能告訴我這段代碼有什麼問題嗎?C#:運算符' - '不能應用於類型'字符串'和'int'的操作數錯誤

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

namespace ConsoleApplication14 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     int int1; 
     int int2; 
     char oper; 

     Console.Write("Enter first integer: "); 
     int1 = Convert.ToInt32(Console.ReadLine()); 

     Console.Write("Enter operator (+,-,*,/or %)"); 
     oper = Convert.ToChar(Console.ReadLine()); 

     Console.Write("Enter first integer: "); 
     int2 = Convert.ToInt32(Console.ReadLine()); 

     if(oper == '+') 
      Console.Write("Answer is: " + int1 + int2); 

     if (oper == '-') 
      Console.Write("Answer is: " + int1 - int2); 

     if(oper == '*') 
      Console.Write("Answer is: " + int1 * int2); 

     if(oper == '/') 
      Console.Write("Answer is: " + int1/int2); 

     if(oper == '%') 
      Console.Write("Answer is: " + int1 % int2); 

     Console.ReadKey(); 
    } 
} 

}

+3

嘗試包裝內'()':'Console.Write( 「答案是:」 +(INT1 - INT2));' –

+1

這工作!謝謝。爲什麼' - '操作符需要()不同於其他? –

+1

建議的一句話,使用Switch/if..else..if代替如此多的if。 –

回答

6
Console.Write("Answer is: " + int1 - int2); 

你是第一個連接字符串與INT1,產生一個字符串。 然後你試着用int2減去這個字符串。

試試這個:

Console.Write("Answer is: " + (int1 - int2)); 

因此,你會先評估(int1 - int2),然後拼接它。

順便說一下,您還必須爲'+'操作符執行此操作。否則,你將連接int2到int1。 對於其他運營商來說,應該感謝'+'的優先權。

+2

'...對於非常操作符「 - [not so](http://msdn.microsoft .COM/EN-US /庫/ 6a71f45d.aspx)。 '*','/'和'%'具有比'+'更高的優先級。是否他*應該*爲每個操作員做這件事是另一回事:) – Rawling

+0

謝謝,我不確定優先順序會適用於不同類型 – Plue

1

用逗號分開的參數Console.Write和使用佔位符{0},就像這樣:

Console.Write("Answer is: {0}", int1 - int2); 

這不會混淆編譯器。

3
Console.Write("Answer is: {0} ",int1 - int2); 
1
if(oper == '+') 
     Console.Write("Answer is: " + (int1 + int2)); 

    if (oper == '-') 
     Console.Write("Answer is: " + (int1 - int2)); 

    if(oper == '*') 
     Console.Write("Answer is: " + (int1 * int2); 

    if(oper == '/') 
     Console.Write("Answer is: " + (int1/int2)); 

    if(oper == '%') 
     Console.Write("Answer is: " + (int1 % int2)); 
相關問題