Kontrollera inmatat värde (temperatur)
Ska kontrollera att den inmatade temperaturen är inom en viss intervall.
temperatur >= -60 && temperatur <= 60
Tycker att en if-sats ska kunna lösa det men får det inte att fungera.
Har provat att skriva in if-satsen i Class Stad men utan framgång.
Har skrivit if-satsen med stadTemp som finns i Class stad men utan framgång.
Någon som har tips eller hint på en lösning eller vad jag inte ser som gör att det blir fel?
Stad[] städer = new Stad[4];
Console.WriteLine("********************************");
Console.WriteLine(" Väderstation");
Console.WriteLine("********************************");
Console.Write("Ange temperatur för Örnskölsvik: ");
städer[0] = new Stad("Örnsköldsvik", int.Parse(Console.ReadLine()));
Console.Write("Ange temperatur för Kiruna: ");
städer[1] = new Stad("Kiruna", int.Parse(Console.ReadLine()));
Console.Write("Ange temperatur för Malmö: ");
städer[2] = new Stad("Malmö", int.Parse(Console.ReadLine()));
Console.Write("Ange temperatur för Västerås: ");
städer[3] = new Stad("Västerås", int.Parse(Console.ReadLine()));
Console.WriteLine("********************************");
if(städer[i] >= -60 && städer[i] <= 60)
{
Console.WriteLine("Felaktigt värde");
}
Duchar en array av städer som verkar bara en klass med ett namn och en temperatur, men städer[i] är ju en stad, du försöker alltså kolla om objektet är inom intervallet men du är väl ändå intresserad av att se om vädret är inom intervallet?
Dracaena skrev:Duchar en array av städer som verkar bara en klass med ett namn och en temperatur, men städer[i] är ju en stad, du försöker alltså kolla om objektet är inom intervallet men du är väl ändå intresserad av att se om vädret är inom intervallet?
Ja precis, det är vädret jag vill kontrollera.
Kommer bara inte på hur jag ska få ut det värdet.
Har försökt med Stad.stadTemp samt stadTemp istället för städer[i] men utan resultat.
Kliar mig i huvudet hur jag ska lösa det.
Nu ser vi inte hur Stad är definierat men baserat på ditt svar ovan borde det vara:städer[i].stadTemp
städer[i]
är objektet och för att nå ett fält är syntaxen <object>.<field>
Din jämförelse ser bakvänd ut, det är väl mellan -60 och 60 som värdet inte är felaktigt?
Medan du utvecklar kan du lägga till en "else" som skriver ut "korrekt värde" så du ser vad som händer.
Programmeraren skrev:Nu ser vi inte hur Stad är definierat men baserat på ditt svar ovan borde det vara:
städer[i].stadTemp
städer[i]
är objektet och för att nå ett fält är syntaxen<object>.<field>
Din jämförelse ser bakvänd ut, det är väl mellan -60 och 60 som värdet inte är felaktigt?
Medan du utvecklar kan du lägga till en "else" som skriver ut "korrekt värde" så du ser vad som händer.
Ja så ska det vara -60 och 60 är rätt värde. :)
Bifogar kod från class stad.
Säkert något som saknas där.
using System;
namespace VäderStation
{
class Stad
{
public string stadNamn;
public int stadTemp;
public Stad(string stadNamn, int stadTemp)
{
this.stadNamn = stadNamn;
this.stadTemp = stadTemp;
}
public override string ToString()
{
return stadNamn + ":" + stadTemp;
}
internal void skrivUt()
{
Console.WriteLine("I " + stadNamn + " är det " + stadTemp + " C°");
}
}
}
Testade du med det jag skrev ovan? Alltså städer[i].stadTemp
Angående jämförelsen:
if(städer[i] >= -60 && städer[i] <= 60) { Console.WriteLine("Felaktigt värde"); }
kommer att skriva ut "Felaktigt värde när" temperaturen är inom det intervallet. Jag antar att du vill ha det tvärtom.
Programmeraren skrev:Testade du med det jag skrev ovan? Alltså
städer[i].stadTemp
Angående jämförelsen:
if(städer[i] >= -60 && städer[i] <= 60) { Console.WriteLine("Felaktigt värde"); }
kommer att skriva ut "Felaktigt värde när" temperaturen är inom det intervallet. Jag antar att du vill ha det tvärtom.
Ja jag provade det. Får då felmeddelande att the name "i" does not exist in current context.
Jag förstod det med felaktigt värde. Ska ändra det =)
Programmeraren skrev:Testade du med det jag skrev ovan? Alltså
städer[i].stadTemp
Angående jämförelsen:
if(städer[i] >= -60 && städer[i] <= 60) { Console.WriteLine("Felaktigt värde"); }
kommer att skriva ut "Felaktigt värde när" temperaturen är inom det intervallet. Jag antar att du vill ha det tvärtom.
Nu fungerar det.
Blev if-sats i class stad enligt kod nedan.
Tack för hjälpande tankar =)
public Stad(string stadNamn, int stadTemp)
{
this.stadNamn = stadNamn;
this.stadTemp = stadTemp;
if (stadTemp >= -60 && stadTemp <= 60)
{
}
else
{
Console.WriteLine("Felaktigt värde");
}
}