2012-11-15 53 views
-1

我已經收到了兩個文件:Sumator.cs和Kalkulator.cs @的Visual Studio 2012名稱不存在,在目前情況下

我覺得你並不需要看這兩個,但我反正把它們放在這裏,往下翻頁並檢查我的問題。

Sumator.cs代碼:

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

namespace Sumator2 
{ 
class Sumator 
{ 
    bool Status = false; 
    double Suma = 0; 
    public Kalkulator Kalk = new Kalkulator(); 
    public Sumator() 
    { 
    } 

    public void ZmienStatus() 
    { 
     Status = !Status; 
    } 
    public string PokazStatus() 
    { 

     if (Status == true) 
      return " Sumator włączony"; 
     else 
      return " Sumator wyłaczony"; 

    } 

    public void PokazWynikS() 
    { 
     if (Status == true) 
      Suma += Kalk.Wynik; 
     Console.WriteLine("Wynik działania : " + Kalk.L1.ToString() + " " + Kalk.Dzialanie.ToString() + " " + Kalk.L2.ToString() + " = " + Kalk.Wynik.ToString() + PokazStatus() + " Suma= " + Suma.ToString()); 
    } 

    public void Zeruj() 
    { 
     Suma = 0; 
    } 
} 
} 

Kalkulator.cs代碼:

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

namespace Sumator2 
{ 
class Kalkulator 
{ 
    public double L1; 
    public double L2; 
    public double Wynik; 
    public String Dzialanie = ""; 
    public Kalkulator() 
    { 
    } 
     void Oblicz() 
    { 
     switch (Dzialanie) 
     { 
      case "+": 
       Wynik = L1 + L2; 
       break; 
      case "-": 
       Wynik = L1 - L2; 
       break; 
      case "*": 
       Wynik = L1 * L2; 
       break; 
      case "/": 
       Wynik = L1/L2; 
       break; 

     } 
    } 
    public void PodajDzialanie(double licz1, double licz2, string dz) 
    { 
     L1 = licz1; 
     L2 = licz2; 
     Dzialanie = dz; 
     Oblicz(); 

    } 
    public void PokazWynik() 
    { 
     Console.WriteLine("Wynik działania : " + L1.ToString() + " " + Dzialanie.ToString() + " " + L2.ToString() + " = " + Wynik.ToString()); 
    } 

} 
} 

,我已經寫了我的主要代碼爲這兩項。 的Program.cs代碼:

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

namespace Sumator2 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Sumator s1 = new Sumator(); 

     s1.ZmienStatus(); 

     bool userNum = true; 
     while (userNum) 
     { 
      double userDouble; 
      string userString = Console.ReadLine(); 

      if (userNum = double.TryParse(userString, out userDouble)) 
      { 
       userDouble = Convert.ToDouble(userString); 
       userNum = false; 
      } 
      else 
      { 
       Console.WriteLine("Nie podano liczby!"); 
       userNum = true; 
      } 
     } 


     s1.Kalk.PodajDzialanie(userDouble, 2, "*"); 
     s1.PokazWynikS(); 
     s1.Kalk.PokazWynik(); 

     s1.Kalk.PodajDzialanie(userDouble, 2, "+"); 
     s1.PokazWynikS(); 
     s1.Kalk.PokazWynik(); 


     Console.ReadKey(); 
    } 
} 
} 

問題是,我想用s1.Kalk.PodajDzialanie()函數使用這些參數:

s1.Kalk.PodajDzialanie(userDouble, 2, "*"); 

,我得到了錯誤,如:

The name 'userDouble' does not exists in the current context 

我的意思是wt *?此功能正常工作,如果我不喜歡:

s1.Kalk.PodajDzialanie(2, 2, "*"); 
+0

請嘗試發佈的代碼複製您的問題所需要的最小量。它不需要3頁的代碼來複制這個問題。 – Servy

+0

did'userDouble'甚至在你完成解析操作後得到結果?也許它缺少了這些值。此外,對於一個說英語的主要人羣,你能否改變你的代碼以獲得英文評論(在這種情況下並不是真的需要,但對未來更復雜的問題很有用) – Steven

+0

我只是不知道問題出在哪裏。無論如何這是菜鳥的錯誤,現在都在工作,我可以繼續使用我的代碼。再次感謝所有! – SubZeroFX

回答

10

你聲明userDoublewhile循環內。一旦你離開那個循環,它就超出了範圍。把它移到循環之前,你應該沒問題。所以相反你有:

bool userNum = true; 
double userDouble; 
while (userNum) 
{  
    string userString = Console.ReadLine(); 

    // Jesli sa liczby to convertujemy 
    if (userNum = double.TryParse(userString, out userDouble)) 
    { 
     userDouble = Convert.ToDouble(userString); 
     userNum = false; 
    } 
    else 
    { 
     Console.WriteLine("Nie podano liczby!"); 
     userNum = true; 
    } 
} 
+0

謝謝,它現在工作! – SubZeroFX

+0

非常歡迎。很高興我能幫上忙。 – MyCodeSucks

2

你聲明userDouble在一個該函數無權訪問的作用域中。

你的代碼改成這樣:

static void Main(string[] args) 
    { 
     Sumator s1 = new Sumator(); 
     double userDouble; //moved declaration out of while loop 

     s1.ZmienStatus(); 

     // Sprawdzanie czy w stringu sa liczby 
     bool userNum = true; 
     while (userNum) 
     { 

      string userString = Console.ReadLine(); 

      // Jesli sa liczby to convertujemy 
      if (userNum = double.TryParse(userString, out userDouble)) 
      { 
       userDouble = Convert.ToDouble(userString); 
       userNum = false; 
      } 
      else 
      { 
       Console.WriteLine("Nie podano liczby!"); 
       userNum = true; 
      } 
     } 


     s1.Kalk.PodajDzialanie(userDouble, 2, "*"); 
     s1.PokazWynikS(); 
     s1.Kalk.PokazWynik(); 

     s1.Kalk.PodajDzialanie(userDouble, 2, "+"); 
     s1.PokazWynikS(); 
     s1.Kalk.PokazWynik(); 


     Console.ReadKey(); 
    } 
2

你不同的雙userDouble;在while循環中聲明,你需要將它移到外面。或者mvoe你的s1.Kalk.PodajDzialanie(userDouble,2,「*」);在while循環結束之前。

2

您的變量userDouble在塊內聲明,您嘗試執行的調用在該塊之外;因此,變量超出範圍,因此在調用的上下文中不存在。

{ 
    declaration; 
    work; 
} 

call; // doesn't work 

但這確實工作:

declaration; 
{ 
    work; 
} 

call; // OK 
相關問題