Gå til innhold

tom tallvariabel, hvordan sjekke?


Anbefalte innlegg

Hallo, jeg har akkurat begynnt med java programmering på høyskolen i Oslo.

 

Jeg innstallerte istad textpad og jdk og har skrevet ned et tulleprogram jeg fant i boka.

 

Programmet ber brukeren om å taste inn to tall som legges sammen og presangteres for brukeren. Men hvis brukeren er så teit at han setter inn noe annet enn tall, så kræsjer programmet, pågrunn av at "parseren" da får bokstaver framfor tall. Det jeg har lyst til å prøve er å bruke "if" klassen(er det riktig terminologi forresten?) til å sjekke om tallvariabelen som er blitt parset fra en string faktisk er satt, og hvis den ikke er satt, gå videre til en spesifik linje. Altså; greia er å bare få programmet til å sette opp en ny promt hvor det står noe sånt som "sett inn et tall ditt naut, ikke bokstaver eller ingenting" helt til brukeren faktisk gjør det.

 

Jeg har fått med meg at hvis variabler ikke er satt, så står det ingen ting i dem. Jeg tror at det er dette som skjer når parseren får feil data å jobbe med, den gjør absolutt ingenting med variabelen den er bedt å sette. Det stemmer eller hva? Hadde vært logisk. Hvis ikke burde man fått null.

 

Hva heter slik en feil forresten?

 

Programmet ser slik ut:

 

import javax.swing.JOptionPane;

 

public class Idiot1

{

public static void main(String [] args)

{

String teksttall1; // Skal konverteres til en tallvariabel

String teksttall2; // Samme.

 

int talldata1; // Denne variabel er det som skal brukes til selve regninga

int talldata2; // Samme.

int sum; // det er her resultatet av addisjonen lagres.

 

// Tall 1 bes plantet inn, for så og bli parset til talldata1:

teksttall1 = JOptionPane.showInputDialog("første tall takk");

talldata1 = Integer.parseInt( teksttall1 );

 

// Tall 2 bes plantet inn, samt parset til talldata2:

teksttall2 = JOptionPane.showInputDialog("neste tall takk");

talldata2 = Integer.parseInt( teksttall2 );

 

sum = talldata1 + talldata2;

 

JOptionPane.showMessageDialog( null, "summen er: " + sum, "Resultat", JOptionPane.PLAIN_MESSAGE ); // viser resultatet.

 

 

}

 

}

Lenke til kommentar
Videoannonse
Annonse

Du får et exeption ja. (Unntak på norsk).

 

Det er flere måter du kan løse dette på.

En måte er å gå gjennom stringen og sjekke at det bare er tall. Da må du bruke løkke (for, while feks).

 

En annen måte er å bruke try-catch blokker. Tror du skal lære det litt senere dette året. Men det er ganske lett.

   try{
    talldata1 = Integer.parseInt(teksttall1);
   }catch(Exception e){
    talldata1=0;
   }

 

Hvis du setter det opp sånn vil ikke programmet stoppe. Først så prøver programmet å gjøre det som skjer i try {} blokken. Hvis det skjer et unntak (Exception) så vil det som skjer i catch blokken skje. Men bare hvis try failer.

 

Hvis du vil forsette å spørre etter et tall helt til brukeren klarer å bare taste tall så kan du sette det opp sånn:

 

boolean fortsett =true;
while(fortsett){
try{
	teksttall1 = JOptionPane.showInputDialog("første tall takk");
	talldata1 = Integer.parseInt(teksttall1);
	fortsett=false;
}catch(Exception e){

}
}

Nå vil programmet spørre om igjen helt til forsett-boolean blir satt til false. Det skjer når try blokken ikke feiler.

Endret av Bjells
Lenke til kommentar

Jeg prøvde det andre forslaget ditt Bjells, jeg får nå en feil helt ved slutten, ved linje 48:

 

"48: error: reached end of file while parsing"

Jeg forstår ikke hva den klager over.

 

import javax.swing.JOptionPane;

 

public class Idiot1

{

public static void main(String [] args)

{

String textdata1;

String textdata2;

 

int numberdata1;

int numberdata2;

int sum;

 

boolean fortsett = true;

 

// Input for textdata2 is requested from the user:

 

while(fortsett){

try{

 

textdata1 = JOptionPane.showInputDialog("Greetings kid, now give me a number");

numberdata1 = Integer.parseInt( textdata1 );

fortsett=false;

}catch(Exception e){

}

// Input for textdata2 is requested from the user:

 

while(fortsett){

try{

 

textdata2 = JOptionPane.showInputDialog("That's nice, you know how to enter numbers,\n feels good huh? Now give me a second number");

numberdata2 = Integer.parseInt( textdata2 );

fortsett=false;

}catch(Exception e){

}

// We now have the needed user input.

sum = numberdata1 + numberdata2;

 

JOptionPane.showMessageDialog( null, "Guess what, the sum is: " + sum, "Result", JOptionPane.PLAIN_MESSAGE );

 

 

}

 

}

 

PS: Jeg oversatte det til engelsk fordi jeg også har spurt noen wow kompiser om hjelp.

Lenke til kommentar

Sjekk om du har samme antall { som }. Ser ut som det mangler et par.

 

Husk at det lønner seg å skrive pent, med riktig indentering. Da får du ikke slike feil.

 

Jeg forstår ikke syntaksen, altså hvorfor og hvordan jeg skal bruke { og }, hvor skal jeg egentlig bruke sånne "klemmer"?

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å
×
×
  • Opprett ny...