Vad missar jag här. Vad jag kan se så anropar du aldrig GetTaxrate() dvs den körs aldrig. OK Gör du det till en property (get o set) skall du "anropa" den Så här är outputen tänk att se ut ta bort raden: Detta borde fungera som du vill. Kom gärna med frågor om koden, har ändrat en del. Hej Cecilia En sista fråga i denna tråd.. Eftersom du inte har nån egen konstruktor finns en default-konstruktor utan argument. Hittade felet. Om den ligger i en annan namespace borde du kunna skrivaC# Nybörjarhjälp eftersökes .......
Jag har 2 publika variabler (TaxRate och ItemType) som jag vill tilldela värden från metoden GetTaxrate.
Tyvärr händer det inget när jag försöker.
Detta är endast testkod för eget syfte att lära mig C#. Jag är rookie på detta språk så garva inte :-)
class Product
{
static void Main(string[] args)
{
Product objGetReceipt = new Product();
objGetReceipt.PrintReceipt();
Console.ReadLine();
}
// Public variables
public string ReadName; // Name of the product
public double ReadPrice; // Price of the product
public int UnitCount; // Unit count
public string FoodItem; // FoodItem y/n
public double TaxRate; // Cannot be assigned any other value than 0
public bool ItemType; // Cannot be assigned any other value than false
public void ReadInput()
{
Console.Write(" Product name: ");
ReadName = Console.ReadLine();
Console.Write(" Product price: ");
ReadPrice = Convert.ToDouble(Console.ReadLine());
Console.Write(" Unit count: ");
UnitCount = Convert.ToInt32(Console.ReadLine());
Console.Write(" Food item y/n: ");
FoodItem = Console.ReadLine();
}
private void GetTaxrate()
{
// Cannot GET or PASS any of the values to or from any public variables
if (FoodItem.Equals("y"))
TaxRate = 0.12;
ItemType.Equals(Boolean.TrueString);
if (FoodItem.Equals("n"))
TaxRate = 0.25;
ItemType.Equals(Boolean.FalseString);
}
private void CalculateValues()
{
Product objGetReadInput = new Product();
objGetReadInput.ReadInput();
string iName = objGetReadInput.ReadName;
double iPrice = objGetReadInput.ReadPrice;
int iCount = objGetReadInput.UnitCount;
// Total price without VAT
double iTotalPrice = iCount * iPrice;
// Static VAT rate - THIS IS SET TO STATIC BECOURSE I FIND NO OTHER WAY
double iRate = 0.25;
// Total VAT
double iTax = iRate * iTotalPrice;
// Total amount with VAT
double iTotalAmount = iTax + iTotalPrice;
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" ------------------------------------------- ");
Console.WriteLine(" Product name: \t\t\t" + iName);
Console.WriteLine(" Total price: \t\t\t" + iTotalPrice);
Console.WriteLine(" Item count: \t\t\t" + iCount);
Console.WriteLine();
Console.WriteLine(" Food item: \t\t\t" + ItemType);
Console.WriteLine();
Console.WriteLine(" Total VAT: \t\t\t" + iTax);
Console.WriteLine(" Total amount: \t\t\t" + iTotalAmount);
}
private void PrintReceipt()
{
Product objGetCalcVal = new Product();
objGetCalcVal.CalculateValues();
Console.WriteLine(" ------------------------------------------- ");
}
}Sv: C# Nybörjarhjälp eftersökes .......
Sv:C# Nybörjarhjälp eftersökes .......
Något åt detta håll kanske ??
Försökte använda variabeln Taxrate i en annan metod men har inte lyckats ännu, krashar bara
public double TaxRate
{
get
{
return TaxRate;
}
set
{
TaxRate = value;
}
}Sv: C# Nybörjarhjälp eftersökes .......
Taxrate = 0.12;
vad ville du åstakomma med
ItemType.Equals(Boolean.FalseString);
Sv:C# Nybörjarhjälp eftersökes .......
Med denna ville jag helt enkelt bara kunna omvandla värdet i if satsen "y" till Boolean.TrueString osv.
ItemType.Equals(Boolean.FalseString);
Över till koden igen.... du får ursäkta mig men jag hänger inte helt med hur jag skall åstadkomma en property.
Koden nedan funkar, men inte när jag försöker anropa variablerna TaxRate och ItemType från någon annan metod som jag försökt i min kod. Har försökt att skapa nya instanser av klassen men icke.
class Product
{
static void Main(string[] args)
{
Product objGetReceipt = new Product();
objGetReceipt.PrintReceipt();
Console.ReadLine();
}
// Public variables
public string ReadName; // Name of the product
public double ReadPrice; // Price of the product
public int UnitCount; // Unit count
public string FoodItem; // FoodItem y/n
public double TaxRate
{
get
{
return TaxRate;
}
set
{
TaxRate = value;
}
}
public bool ItemType
{
get
{
return ItemType;
}
set
{
ItemType = value;
}
}
public void ReadInput()
{
Console.Write(" Product name: ");
ReadName = Console.ReadLine();
Console.Write(" Product price: ");
ReadPrice = Convert.ToDouble(Console.ReadLine());
Console.Write(" Unit count: ");
UnitCount = Convert.ToInt32(Console.ReadLine());
Console.Write(" Food item y/n: ");
FoodItem = Console.ReadLine();
}
private void GetTaxrate()
{
// Cannot GET or PASS any of the values to or from any public variables
if (FoodItem.Equals("y"))
TaxRate = 0.12;
ItemType.Equals(Boolean.TrueString);
if (FoodItem.Equals("n"))
TaxRate = 0.25;
ItemType.Equals(Boolean.FalseString);
}
private void CalculateValues()
{
Product objGetReadInput = new Product();
objGetReadInput.ReadInput();
string iName = objGetReadInput.ReadName;
double iPrice = objGetReadInput.ReadPrice;
int iCount = objGetReadInput.UnitCount;
// Total price without VAT
double iTotalPrice = iCount * iPrice;
// Static VAT rate - THIS IS SET TO STATIC BECOURSE I FIND NO OTHER WAY
//double iRate = 0.25;
double iRate = TaxRate;
bool ItemType = ItemType;
// Total VAT
double iTax = iRate * iTotalPrice;
// Total amount with VAT
double iTotalAmount = iTax + iTotalPrice;
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" ------------------------------------------- ");
Console.WriteLine(" Product name: \t\t\t" + iName);
Console.WriteLine(" Total price: \t\t\t" + iTotalPrice);
Console.WriteLine(" Item count: \t\t\t" + iCount);
Console.WriteLine();
//Console.WriteLine(" Food item: \t\t\t" + ItemType);
Console.WriteLine();
Console.WriteLine(" Total VAT: \t\t\t" + iTax);
Console.WriteLine(" Total amount: \t\t\t" + iTotalAmount);
}
private void PrintReceipt()
{
Product objGetCalcVal = new Product();
objGetCalcVal.CalculateValues();
Console.WriteLine(" ------------------------------------------- ");
}
}Sv: C# Nybörjarhjälp eftersökes .......
Product name: laptop
Product price: 10000
Unit count: 1
Food item y/n: n
---------------------------------------------------------------------------
Product name: laptop
Total price: 10000
Item count: 1
Food item: false
Total VAT: 2500
Total amont: 12500
----------------------------------------------------------------------------Sv:C# Nybörjarhjälp eftersökes .......
bool ItemType = ItemType; // gör inte mycket nytta
property-klassen:
public double TaxRate
{
get
{
return TaxRate;
}
set
{
TaxRate = value;
}
}
... blir rekursiv...
gör om till :
public double TaxRate
{
get;
set;
}
samma sak med ItemType (som du inte använder än)
mvh
Peter
PS. Det finns en hel del andra fel med koden också, men börja med dessa och kör i debuggern så har du iallafall kommit vidare. DSSv: C# Nybörjarhjälp eftersökes .......
class Product
{
static void Main(string[] args)
{
Product objGetReceipt = new Product();
objGetReceipt.PrintReceipt();
Console.ReadLine();
}
private string Name; // Name of the product
private double Price; // Price of the product
private int UnitCount; // Unit count
private Boolean FoodItem; // FoodItem y/n
private double TaxRate;
public void ReadInput()
{
Console.Write(" Product name: ");
Name = Console.ReadLine();
Console.Write(" Product price: ");
Price = Convert.ToDouble(Console.ReadLine());
Console.Write(" Unit count: ");
UnitCount = Convert.ToInt32(Console.ReadLine());
Console.Write(" Food item y/n: ");
String IsFood;
IsFood = Console.ReadLine();
if (IsFood.Equals("y"))
FoodItem = true;
if (IsFood.Equals("n"))
FoodItem = false;
}
private void GetTaxrate()
{
if (FoodItem)
TaxRate = 0.12;
else
TaxRate = 0.25;
}
private void GetValues()
{
ReadInput();
GetTaxrate();
}
private void PrintReceipt()
{
GetValues();
// Total price without VAT
double iTotalPrice = UnitCount * Price;
// Total VAT
double iTax = TaxRate * iTotalPrice;
// Total amount with VAT
double iTotalAmount = iTax + iTotalPrice;
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" ------------------------------------------- ");
Console.WriteLine(" Product name: \t\t\t" + Name);
Console.WriteLine(" Total price: \t\t\t" + Price);
Console.WriteLine(" Item count: \t\t\t" + UnitCount);
Console.WriteLine();
Console.WriteLine(" Food item: \t\t\t" + FoodItem.ToString());
Console.WriteLine();
Console.WriteLine(" Total VAT: \t\t\t" + iTax);
Console.WriteLine(" Total amount: \t\t\t" + iTotalAmount);
Console.WriteLine(" ------------------------------------------- ");
}
}
Sv:C# Nybörjarhjälp eftersökes .......
Ursäkta mitt sena svar
Ser jättebra ut.
Stort tack för hjälpen
Jag kommer garanterat tillbaka med nya frågor snart :-)
mvh
TorbjörnSv: C# Nybörjarhjälp eftersökes .......
Hur skapar jag en instans av en egen Class. som finns i (ex TaxRate.cs).
I det fall jag skulle vilja separera tex. metoden GetTaxRate (i min kod i denna tråd) och lägga den i en egen klass som heter TaxRate.cs separat från Product klassen som ligger i Product.cs.
Det verkar inte räcka med att försöka instansiera genom ex. Product GetValues = new Product.
Jag begär inte att någon skall skriva hela klassen åt mig, bara några tips på vägen.
Jag har 2 filer som skall utföra detta:
Product.cs Skall skicka värden till TaxRate
TaxRate.cs Tar emot och utför momsberäkning av inkomna värden från Product.csSv:C# Nybörjarhjälp eftersökes .......
Product p = new Product();
p.GetValues();
osvSv: C# Nybörjarhjälp eftersökes .......
Bägge klasserna måste ligga i samma namespace.
mvh
TorbjörnSv:C# Nybörjarhjälp eftersökes .......
Products.Product p = new Products.Product();
om Products är namnet på namespacen dvs.
ett annat sätt är att lägga till
using Products;
sedan kan du använda den som om den låg i samma namespace.