7 svar
75 visningar
Gokka är nöjd med hjälpen
Gokka 17
Postad: 26 dec 2021 23:32

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");
            }
Dracaena 4220 – Moderator
Postad: 27 dec 2021 02:52

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? 

Gokka 17
Postad: 27 dec 2021 08:39
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. 

Programmeraren 2191
Postad: 27 dec 2021 09:05

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.

Gokka 17
Postad: 27 dec 2021 09:15
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°");
        }

       
    }
}
Programmeraren 2191
Postad: 27 dec 2021 09:51

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.

Gokka 17
Postad: 27 dec 2021 10:09
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 =) 

Gokka 17
Postad: 27 dec 2021 14:45
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");
            }
        }
Svara Avbryt
Close