Avatar billede maxmuldjord Nybegynder
04. september 2004 - 12:21 Der er 11 kommentarer og
1 løsning

fejl i loop (tror jeg )

Hej exp

Jeg kan ikke finde min fejl kan i måske påpege hvor den er? Nu er jeg ikke ude efter en hel kode, bare et fingerpeg om hvad jeg gør galt. Jeg har tilføjet metoderne SuperfastForward og SuperfastBackward og i do - while if sætningerne med H og M. Ligedes i Console.WriteLine det med H og M. Jeg får ingen fejl af compileren men når jeg indtaster et bogstav så kører det ikke. Hele smøren kommer her:

using System;

/*
* The Blipos clock has 256 seconds in a minute and
* 65536 minutes in a day. The night lasts for
* 32768 minutes and is represented by negative minute values.
* The daylight lasts 32767 minutes represented by postive
* values. When minutes equals 0 it is neither day nor night.
* The clock can tick forwards, backwards, be adjusted,
* move fast forwards and fast backwards
*/

class BliposClock
{
    private byte seconds;
    private short minutes;
 
    public BliposClock()
    {
        seconds = 0;
        minutes = 0;
    }

    public void OneForward()
    {
        byte originalSeconds = seconds;
     
        seconds++;
        if(originalSeconds > seconds)
            // Overflow of seconds variable
            minutes++;
    }

    public void OneBackward()
    {
        byte originalSeconds = seconds;

        seconds--;
        if (originalSeconds < seconds)
            // Underflow of seconds variable
            minutes--;       
    }
 
    public void FastForward()
    {
        byte originalSeconds = seconds;
     
        seconds = (byte)(seconds + 50);
        if (originalSeconds > seconds)
            // Overflow of seconds variable
            minutes++;
    }
 
    public void FastBackward()
    {
        byte originalSeconds = seconds;

        seconds = (byte)(seconds - 50);
        if (originalSeconds < seconds)
            // Underflow of seconds variable
            minutes--;
    }

    public void SuperfastForward()
    {
            byte originalSeconds = seconds;
            seconds = (byte) (seconds + 100);
            if (originalSeconds > seconds)
            minutes++;
    }
    public void SuperfastBackward()
    {
        byte originalSeconds = seconds;
        seconds = (byte) (seconds - 100);
        if (originalSeconds < seconds)
        minutes--;
    }

    public void SetSeconds(byte sec)
    {
        seconds = sec;
    }
 
    public void SetMinutes(short min)
    {
        minutes = min;
    }
 
    public void ShowTime()
    {
        Console.WriteLine("Sec: " + seconds + " Min: " + minutes);
    }
}
 
public class RunBliposClock
{
    public static void Main()
    {
        string command;

        Console.WriteLine("Welcome to the Blipos Clock. " +
            "256 seconds per minute " +
            "65536 minutes per day");
        BliposClock myClock = new BliposClock();
        Console.WriteLine("Please set the clock");
        Console.Write("Enter Seconds: ");
        myClock.SetSeconds(Convert.ToByte(Console.ReadLine()));
        Console.Write("Enter minutes: ");
        myClock.SetMinutes(Convert.ToInt16(Console.ReadLine()));
        Console.WriteLine("Enter (F)orward (B)ackward " +
            "(A)dd fifty (D)educt fifty " +
            "(H)add 100 (M)deduct 100 (T)erminate");
        do
        {
            command = Console.ReadLine().ToUpper();
            if (command == "F")
                myClock.OneForward();
            if (command == "B")
                myClock.OneBackward();
            if(command == "A")
                myClock.FastForward();
            if(command == "D")
                myClock.FastBackward();
            if (command == "H")
                myClock.SuperfastForward();
            if (command == "M")
                myClock.SuperfastBackward ();
        } while (command != "T");
        Console.WriteLine("Thank you for using the Blipos Clock");
        System.Console.ReadLine ();
    }
}
Avatar billede arne_v Ekspert
04. september 2004 - 12:35 #1
Prøv med en løkke som:

      do
        {
            Console.WriteLine("Enter (F)orward (B)ackward " +
                              "(A)dd fifty (D)educt fifty " +
                              "(H)add 100 (M)deduct 100 (T)erminate");  // <---- prompt
            command = Console.ReadLine().ToUpper();
            if (command == "F")
                myClock.OneForward();
            if (command == "B")
                myClock.OneBackward();
            if(command == "A")
                myClock.FastForward();
            if(command == "D")
                myClock.FastBackward();
            if (command == "H")
                myClock.SuperfastForward();
            if (command == "M")
                myClock.SuperfastBackward ();
            myClock.ShowTime(); // <---- udskriv
        } while (command != "T");
Avatar billede maxmuldjord Nybegynder
04. september 2004 - 12:43 #2
tak Arne

men der sker ikke noget når jeg indtaster bogstaverne ( jeg har indsat dit forslag)
Jeg kan nok indtaste sec og min og også terminate?
Avatar billede arne_v Ekspert
04. september 2004 - 12:48 #3
Øh - det gør der hos mig.

Welcome to the Blipos Clock. 256 seconds per minute 65536 minutes per day
Please set the clock
Enter Seconds: 0
Enter minutes: 0
Sec: 0 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
f
Sec: 1 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
f
Sec: 2 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
a
Sec: 52 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
a
Sec: 102 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
a
Sec: 152 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
a
Sec: 202 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
a
Sec: 252 Min: 0
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
a
Sec: 46 Min: 1
Enter (F)orward (B)ackward (A)dd fifty (D)educt fifty (H)add 100 (M)deduct 100 (
T)erminate
T
Sec: 46 Min: 1
Thank you for using the Blipos Clock
Avatar billede maxmuldjord Nybegynder
04. september 2004 - 12:57 #4
hmm. kan det skyldes at jeg bruger VS? Jeg får ingen fejl men den kører ikke videre når jeg indtaster f.eks a Jeg vedlægger hele koden:

using System;

/*
* The Blipos clock has 256 seconds in a minute and
* 65536 minutes in a day. The night lasts for
* 32768 minutes and is represented by negative minute values.
* The daylight lasts 32767 minutes represented by postive
* values. When minutes equals 0 it is neither day nor night.
* The clock can tick forwards, backwards, be adjusted,
* move fast forwards and fast backwards
*/

class BliposClock
{
    private byte seconds;
    private short minutes;
 
    public BliposClock()
    {
        seconds = 0;
        minutes = 0;
    }

    public void OneForward()
    {
        byte originalSeconds = seconds;
     
        seconds++;
        if(originalSeconds > seconds)
            // Overflow of seconds variable
            minutes++;
    }

    public void OneBackward()
    {
        byte originalSeconds = seconds;

        seconds--;
        if (originalSeconds < seconds)
            // Underflow of seconds variable
            minutes--;       
    }
 
    public void FastForward()
    {
        byte originalSeconds = seconds;
     
        seconds = (byte)(seconds + 50);
        if (originalSeconds > seconds)
            // Overflow of seconds variable
            minutes++;
    }
 
    public void FastBackward()
    {
        byte originalSeconds = seconds;

        seconds = (byte)(seconds - 50);
        if (originalSeconds < seconds)
            // Underflow of seconds variable
            minutes--;
    }

    public void SetSeconds(byte sec)
    {
        seconds = sec;
    }
 
    public void SetMinutes(short min)
    {
        minutes = min;
    }
 
    public void ShowTime()
    {
        Console.WriteLine("Sec: " + seconds + " Min: " + minutes);
    }
}
 
public class RunBliposClock
{
    public static void Main()
    {
        string command;

        Console.WriteLine("Welcome to the Blipos Clock. " +
            "256 seconds per minute " +
            "65536 minutes per day");
        BliposClock myClock = new BliposClock();
        Console.WriteLine("Please set the clock");
        Console.Write("Enter Seconds: ");
        myClock.SetSeconds(Convert.ToByte(Console.ReadLine()));
        Console.Write("Enter minutes: ");
        myClock.SetMinutes(Convert.ToInt16(Console.ReadLine()));
       
     
        do
        {
            Console.WriteLine("Enter (F)orward (B)ackward " +
                "(A)dd fifty (D)educt fifty " +
                "(H)add 100 (M)deduct 100 (T)erminate");  // <---- prompt
            command = Console.ReadLine().ToUpper();
            if (command == "F")
                myClock.OneForward();
            if (command == "B")
                myClock.OneBackward();
            if(command == "A")
                myClock.FastForward();
            if(command == "D")
                myClock.FastBackward();
            if (command == "H")
                myClock.SuperfastForward();
            if (command == "M")
                myClock.SuperfastBackward ();
            myClock.ShowTime(); // <---- udskriv
        } while (command != "T");
    }
}
Avatar billede arne_v Ekspert
04. september 2004 - 13:04 #5
Det lyder godt nok mystisk.

Der sker slet ikke noget når du taster A ?
Avatar billede arne_v Ekspert
04. september 2004 - 13:10 #6
Og check om du har fået korrekt rebuildet.
Avatar billede maxmuldjord Nybegynder
04. september 2004 - 13:19 #7
Der sker ingen ting, når jeg kører den originale kode virker det, jeg har prøvet at gemme, lukke ned og åbne igen samt rebuild
Avatar billede maxmuldjord Nybegynder
04. september 2004 - 16:19 #8
Dette er meget mærkeligt, når jeg kører det uden for VS så virker det, jeg har lige prøvet det på en anden computer? Men smid et svar Arne, det virker jo!
Avatar billede arne_v Ekspert
04. september 2004 - 16:24 #9
Der er noget galt med dit VS projekt.

Har du prøvet at slette den genererede EXE fil og rebuilde ?
Avatar billede arne_v Ekspert
04. september 2004 - 16:24 #10
svar
Avatar billede maxmuldjord Nybegynder
04. september 2004 - 16:41 #11
Jeg har lige fået VS så jeg gør nok noget forkert, jeg er nok klar over hvordan jeg rebuilder men hvor finder jeg den exe fil der skal slettes?
Avatar billede arne_v Ekspert
04. september 2004 - 16:47 #12
Godt spørgsmål. Jeg kender ikke VS.NET !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester