Gå til innhold

Hjelp med oppgave i Java


Anbefalte innlegg

Jeg er ny i Java, og har fått en oppgave om å lage et program som leser inn en rekke bokstavkarakterer (A-F), og som skal skrive ut den beste og den dårligste. Problemet med det programmet jeg har laget er at bare den siste karakteren jeg leser inn "gjelder". Leser jeg inn A,B,E,C, får jeg at beste og dårligste karakter er C. Harholdt på i et par dager med dette, og begynner å bli lei. I tillegg har jeg mange andre oppgaver som skal leveres.. HELP!!

 

 

//Program som leser inn karakterer A-F, og som skal skrive ut den beste og dårligste.

 

import javax.swing.JOptionPane;

 

public class test {

 

public static void main(String[] args) {

 

//Variabeldeklarasjon

String karakter;

String inputKarakter;

String bestutStreng;

String worstutStreng;

 

 

//Initierer

bestutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";

worstutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";

 

 

//Utfører "beregningene"

karakter = JOptionPane.showInputDialog("Skriv inn karakter (A-F): (Stopp avslutter innlesning) ");

inputKarakter = karakter.toUpperCase();

while (! inputKarakter.equals("STOPP")) {

karakter = JOptionPane.showInputDialog("Skriv inn karakter (A-F): (Stopp avslutter innlesning) ");

inputKarakter = karakter.toUpperCase();

if (inputKarakter.equals("A")) {

bestutStreng = "Beste innleste karakter er A";

}

else if (inputKarakter.equals("B")) {

bestutStreng = "Beste innleste karakter er B";

}

else if (inputKarakter.equals("C")) {

bestutStreng = "Beste innleste karakter er C";

}

else if (inputKarakter.equals("D")) {

bestutStreng = "Beste innleste karakter er D";

}

else if (inputKarakter.equals("E")) {

bestutStreng = "Beste innleste karakter er E";

}

else if (inputKarakter.equals("F")) {

bestutStreng = "Beste innleste karakter er F";

}

//endif

if (inputKarakter.equals("F")) {

worstutStreng= "Dårligste innleste karakter er F";

}

else if (inputKarakter.equals("E")) {

worstutStreng = "Dårligste innleste karakter er E";

}

else if (inputKarakter.equals("D")) {

worstutStreng = "Dårligste innleste karakter er D";

}

else if (inputKarakter.equals("C")) {

worstutStreng = "Dårligste innleste karakter er C";

}

else if (inputKarakter.equals("B")) {

worstutStreng = "Dårligste innleste karakter er B";

}

else if (inputKarakter.equals("A")) {

worstutStreng = "Dårligste innleste karakter er A";

}

//endif

}//endwhile

//Skriver ut resultat

JOptionPane.showMessageDialog(null, bestutStreng, "Beste karakter", JOptionPane.PLAIN_MESSAGE);

JOptionPane.showMessageDialog(null, worstutStreng, "Dårligste karakter", JOptionPane.PLAIN_MESSAGE);

 

}//endklasse

}//endmain

Lenke til kommentar
Videoannonse
Annonse

Jeg ville laget et Array som tok i mot alle inputene. F.eks ved inkrementere en int for å bruke som indeks til arrayet for hver gjennomkjøring av loopen . break ut av loopen når du finner STOPP.

 

Når man er ferdig med while/for løkken ville jeg loopet gjennom arrayet og sjekket om den inneholdt A i noen av dem, B i noen av dem osv i den rekkefølgen. Da kan du bare printe "array[indeks] er beste karakter" og så breake ut av loopen.

 

Kan ikke komme med kodeeksempler da jeg ikke har lært meg java enda.

Lenke til kommentar
Jeg ville laget et Array som tok i mot alle inputene. F.eks ved inkrementere en int for å bruke som indeks til arrayet for hver gjennomkjøring av loopen . break ut av loopen når du finner STOPP.

 

Når man er ferdig med while/for løkken ville jeg loopet gjennom arrayet og sjekket om den inneholdt A i noen av dem, B i noen av dem osv i den rekkefølgen. Da kan du bare printe "array[indeks] er beste karakter" og så breake ut av loopen.

 

Kan ikke komme med kodeeksempler da jeg ikke har lært meg java enda.

6899521[/snapback]

 

 

Hei!

 

Takk for svar, men vi har ikke lært Array ennå, og her derfor ikke lov til å bruke det på denne øvinga...

Lenke til kommentar

Nå er det en stund siden jeg dreiv med java, så syntaksen får du fikse opp i selv, men sånn kan du gjøre det.

 

Gi hver karakter en verdi 1-6 som representerer bokstavkarakterene.

 

 

if bestekarakter > innlest karakter

then bestekarakter = innlestkarakter

else bestekarakter = bestekarakter

end if

 

if darligstekarakter > innlestkarakter

then darligstekarakter = darligstekarakter

else darligstekarakter = innlestkarakter

end if

 

Nå vil variablene kun erstattes hvis den innleste karakteren er dårligere eller bedre.

Lenke til kommentar

No slikt burde fungere:

 


       //    Variabeldeklarasjon
       String karakter;
       String inputKarakter;
       String bestutStreng;
       String worstutStreng;
       char best = ' ';
       char worst = ' ';

       //    Initierer
       bestutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";
       worstutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";

       //    Utfører "beregningene"
       do {
           karakter = JOptionPane.showInputDialog("Skriv inn karakter (A-F): (Stopp avslutter innlesning) ");
           inputKarakter = karakter.toUpperCase();
           
           if ("ABCDEF".indexOf(inputKarakter) > -1 && inputKarakter.length() == 1) {
               //Vi har en gyldig karakter!
               char inputKarakterChar = inputKarakter.toCharArray()[0];
               if (best == ' ' || inputKarakterChar < best ) {
                   best = inputKarakterChar;
                   bestutStreng = "Beste innleste karakter er " + best;
               }
               if (worst == ' ' || inputKarakterChar > worst ) {
                   worst = inputKarakterChar;
                   worstutStreng = "Dårligste innleste karakter er " + worst;
               }
           }
           
       } while (!inputKarakter.equals("STOPP"));
       
       //    Skriver ut resultat
       JOptionPane.showMessageDialog(null, bestutStreng, "Beste karakter", JOptionPane.PLAIN_MESSAGE);
       JOptionPane.showMessageDialog(null, worstutStreng, "Dårligste karakter", JOptionPane.PLAIN_MESSAGE);

       System.exit(0);

Lenke til kommentar
No slikt burde fungere:

 


       //    Variabeldeklarasjon
       String karakter;
       String inputKarakter;
       String bestutStreng;
       String worstutStreng;
       char best = ' ';
       char worst = ' ';

       //    Initierer
       bestutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";
       worstutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";

       //    Utfører "beregningene"
       do {
           karakter = JOptionPane.showInputDialog("Skriv inn karakter (A-F): (Stopp avslutter innlesning) ");
           inputKarakter = karakter.toUpperCase();
           
           if ("ABCDEF".indexOf(inputKarakter) > -1 && inputKarakter.length() == 1) {
               //Vi har en gyldig karakter!
               char inputKarakterChar = inputKarakter.toCharArray()[0];
               if (best == ' ' || inputKarakterChar < best ) {
                   best = inputKarakterChar;
                   bestutStreng = "Beste innleste karakter er " + best;
               }
               if (worst == ' ' || inputKarakterChar > worst ) {
                   worst = inputKarakterChar;
                   worstutStreng = "Dårligste innleste karakter er " + worst;
               }
           }
           
       } while (!inputKarakter.equals("STOPP"));
       
       //    Skriver ut resultat
       JOptionPane.showMessageDialog(null, bestutStreng, "Beste karakter", JOptionPane.PLAIN_MESSAGE);
       JOptionPane.showMessageDialog(null, worstutStreng, "Dårligste karakter", JOptionPane.PLAIN_MESSAGE);

       System.exit(0);

6899868[/snapback]

 

 

Det fungerer det!! Muligens litt for avansert, men det får gå! Takker!! Men hvis noen har et annet forslag uten array er det bare å legge ut! Fikk høre at vi måtte løse den ved en masse if'er og else'er...

Endret av anderskk
Lenke til kommentar

Her er en halvferdig en

 

   public static void main(String[] args) {

       //Variabeldeklarasjon
       String karakter;
       String ik;
       String bestutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";
       String worstutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";
       String best = "";
       String worst = "";

       //Utfører "beregningene"
       do {
           karakter = JOptionPane.showInputDialog("Skriv inn karakter (A-F): (Stopp avslutter innlesning) ");
           ik = karakter.toUpperCase();
           
           //Bare tillatt med karakterer A-F
           if (ik.equals("A") ||ik.equals("B") || ik.equals("C") || ik.equals("D") ||ik.equals("E") || ik.equals("F")) {
               //Vi har en gyldig karakter
               
               //Sjekke om dette er den beste karakteren.
               if (ik.equals("A")) {
                   best = "A";
               } else if (ik.equals("B") && !best.equals("A")) {
                   best = "B";
               } else if (ik.equals("C") && !best.equals("A") && !best.equals("B")) {
                   best = "C";
               } else if (ik.equals("D") && !best.equals("A") && !best.equals("B") && !best.equals("C")) {
                   best = "D";
               } else if (ik.equals("E") && !best.equals("A") && !best.equals("B") && !best.equals("C") && !best.equals("D")) {
                   best = "E";
               } else if (ik.equals("E") && !best.equals("A") && !best.equals("B") && !best.equals("C") && !best.equals("D") && !best.equals("E")) {
                   best = "F";
               }
               
               
           }
           
       } while (!ik.equals("STOPP"));
       
       if (!best.equals("")) {
           bestutStreng = "Beste innleste karakter er " + best;
       }
       if (!worst.equals("")) {
           worstutStreng = "Dårligste innleste karakter er " + best;
       }
       
       //Skriver ut resultat
       JOptionPane.showMessageDialog(null, bestutStreng, "Beste karakter", JOptionPane.PLAIN_MESSAGE);
       JOptionPane.showMessageDialog(null, worstutStreng, "Dårligste karakter", JOptionPane.PLAIN_MESSAGE);

       System.exit(0);

 

Klarer du resten :)

Lenke til kommentar
I stedet for å bruke chararray kan du ta en substring av stringen før du caster til char.

6900064[/snapback]

 

Og det vil si? Er helt "dummie" jeg...

6900120[/snapback]

w3edr5t sitt siste eksempel er nok mer i rett vanskelighetsklasse så se på det du.. selv om det er litt redundancy der.

 

Det er ikke nødvendig å først teste om den er ABCDEF og så teste hvilken av de den er.

 

test heller :

 

If A

do A

else if B

do B

else if C

do C

else if STOP

do stop (break;)

else ugylidig_tegn

Lenke til kommentar
Her er en halvferdig en

 

   public static void main(String[] args) {

       //Variabeldeklarasjon
       String karakter;
       String ik;
       String bestutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";
       String worstutStreng = "Du har ikke tastet inn karakter, eller tastet inn en ugyldig karakter";
       String best = "";
       String worst = "";

       //Utfører "beregningene"
       do {
           karakter = JOptionPane.showInputDialog("Skriv inn karakter (A-F): (Stopp avslutter innlesning) ");
           ik = karakter.toUpperCase();
           
           //Bare tillatt med karakterer A-F
           if (ik.equals("A") ||ik.equals("B") || ik.equals("C") || ik.equals("D") ||ik.equals("E") || ik.equals("F")) {
               //Vi har en gyldig karakter
               
               //Sjekke om dette er den beste karakteren.
               if (ik.equals("A")) {
                   best = "A";
               } else if (ik.equals("B") && !best.equals("A")) {
                   best = "B";
               } else if (ik.equals("C") && !best.equals("A") && !best.equals("B")) {
                   best = "C";
               } else if (ik.equals("D") && !best.equals("A") && !best.equals("B") && !best.equals("C")) {
                   best = "D";
               } else if (ik.equals("E") && !best.equals("A") && !best.equals("B") && !best.equals("C") && !best.equals("D")) {
                   best = "E";
               } else if (ik.equals("E") && !best.equals("A") && !best.equals("B") && !best.equals("C") && !best.equals("D") && !best.equals("E")) {
                   best = "F";
               }
               
               
           }
           
       } while (!ik.equals("STOPP"));
       
       if (!best.equals("")) {
           bestutStreng = "Beste innleste karakter er " + best;
       }
       if (!worst.equals("")) {
           worstutStreng = "Dårligste innleste karakter er " + best;
       }
       
       //Skriver ut resultat
       JOptionPane.showMessageDialog(null, bestutStreng, "Beste karakter", JOptionPane.PLAIN_MESSAGE);
       JOptionPane.showMessageDialog(null, worstutStreng, "Dårligste karakter", JOptionPane.PLAIN_MESSAGE);

       System.exit(0);

 

Klarer du resten :)

6900901[/snapback]

 

Da kunne selv en dummie løse den!! :D Tusen hjertelig!!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...