Gå til innhold

skjer med at jeg ikke kan ha else her?


Anbefalte innlegg


package trying.out.something;

import java.util.Scanner;

public class bibliotek {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
String ans = "";


boolean exit = false;


System.out.println("Skriv antall uker siden sist du har lånt boken:");

do {
String text = sc.nextLine();

if (text.matches("[0-4]")) System.out.println("Du kan låne den litt til"); exit = true; // Går bare ann å skrive fra 0 til 9
else System.out.println("Skriv om på nytt");
if (text.matches("[5-9]")) System.out.println("Du kan ikke låne den lenger");
} while (!exit);

}

}

Hvorfor kan jeg ikke ha en else setning der. Vil ha det sånn at hvis de skriver noe annet en de tallene 0-4 eller 5-9 så skal programmet spør igjen eller som det står der, skrive om på nytt.

Lenke til kommentar
Videoannonse
Annonse

Det vil jo alltid være uenighet om slikt. Kan være like ille å diskutere som religion. :)

 

Her er fra en tilfeldig valgt 'code conventions'

http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html

Braces are used around all statements, even single statements, when they are part of a control structure, such as an if-else or for statement. This makes it easier to add statements without accidentally introducing bugs due to forgetting to add braces.
  • Liker 3
Lenke til kommentar

Greit jeg bytta litt på det, men kom med et annet problem nå. Vil at alle karakterer og ord skal komme under

(text.matches("")) får bare til en og en bokstav.

Og hvis det går ann å ha tall fra 4 til uendelig eller høyere enn 4-9 hvert fall.

System.out.println("Skriv antall uker siden sist du har lånt boken \nskriv \"exit\" for å gå ut:");
 
do {
String text = sc.nextLine();
if (text.matches("")) System.out.println("skriv på nytt"); // få all text til å gå her som er skrevet
if (text.matches("[0-3]")) System.out.println("Du kan låne den litt til"); // Går bare ann å skrive fra 0 til 9
if (text.matches("[4-9]")) System.out.println("Du må levere den tilbake!");
else if (text.matches("exit")) exit = true;
}  while (!exit);
Endret av Emsal
Lenke til kommentar

Nei.

 

Jo, fordi det alltid kommer en gjøk - f.eks. meg - og skal utvide one-lineren inni if-blokken på et senere tidspunkt, og glemmer å sette på bartene. Slurv, ja, men uunngåelig. Bedre å få dem på plass med en gang.

 

Satt faktisk på jobbintervju en gang og ba om å få se koden til systemet jeg skulle begynne å jobbe med. Det første som dukka opp på skjermen var nettopp en sånn blemme... (Tok jobben likevel, noe som ikke viste seg å være helt lurt, så det var forsåvidt nyttig at bartene var droppa der, bare jeg hadde tatt hintet også ...)

Lenke til kommentar

 

Greit jeg bytta litt på det, men kom med et annet problem nå. Vil at alle karakterer og ord skal komme under

(text.matches("")) får bare til en og en bokstav.

Og hvis det går ann å ha tall fra 4 til uendelig eller høyere enn 4-9 hvert fall.

 

Det er jo egentlig tall du jobber med her, så du bør kanskje ta konsekvensen av det og droppe regex til fordel for Integer.parseInt(...);

    public static void main(String[] args) {
        System.out.println("Skriv antall uker siden sist du har lånt boken \nskriv \"exit\" for å gå ut:");
        Scanner sc = new Scanner(System.in);
        Boolean exit = false;
        do {
            String input = sc.nextLine();
            if ("exit".equals(input)) {
                exit = true;
            } else // ingen bart ... fysj!
                try {
                    Integer uker = Integer.parseInt(input);
                    if (uker < 0) {
                        throw new NumberFormatException("negativ verdi");
                    }
                    if (uker < 4) {
                        System.out.println("Du kan låne den litt til");
                    } else {
                        System.out.println("Du må levere tilbake nuh!");
                    }

                } catch (NumberFormatException nfe) {
                    System.err.println("Prøv igjen (" + nfe.getMessage() + ")");
                }
        } while (!exit);
    }
Endret av quantum
Lenke til kommentar

if(text.matches("[0-4]"))
    System.out.println("Du kan låne den litt til");
exit = true; // Går bare ann å skrive fra 0 til 9
else
     System.out.println("Skriv om på nytt");

Hvis man bare formaterer på en fornuftig måte så er feilen helt åpenbar. Det er ikke brackets som er problemet. Eller jo, det skulle vært brackets der, men jeg har null imot if-er uten brackets. Hvis man kan unngå dem så er jeg helt for.

 

I dette:

 

int Foo(int bar)
  int value;
  if(bar == 100)
  {
    // en million tusen hundre linjer med kode
    value = Tannhjul
  }
  else
  {
     value = Spindelvev;
  }
  return value;
}

foretrekker jeg

 

int Foo(int bar)
{
  if(bar != 100)
    return Spindelvev;
  
   // en million tusen hundre linjer med kode!
   return Tannhjul;
}
Endret av GeirGrusom
Lenke til kommentar

nvm fant ut av det

 

EDIT: Tusen takk for hjelpa folkens! :) Lært masse i dag ^^

                    if (uker == 4) { System.out.println("Lever den i dag");
                    }
                    if (uker < 4) {
                        System.out.println("Du kan låne den litt til");
                    }
                    else if (uker > 4) {
                        System.out.println("Du må levere den tilbake!");
Endret av Emsal
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...