Permalänk
Medlem

Problem med metoder i Java

I programmet ska man få välja antingen E eller U som allternativ beeroende på vilken man väljer ska man skickas till en separat metod där uträkningarna görs av bensinförbrukning. Resultatet ska sedan returneras och skirvas ut probblemet är att jag inte riktigt vet hur jag ska göra för att få tillbaka värdena?

Någon som har några förslag, känns som om jag är jävligt nära att få till det eller är jag helt ute och cyklar??

import java.awt.Component.*;
import javax.swing.*;
import static javax.swing.JOptionPane.*;
public class Main
{

/**
* @param args the command line arguments
*/
public static void main(String[] args)
{

JFrame f=new JFrame();
String indata;
double km;
double liter;
int repeat;

do
{
showMessageDialog(null, "Det här programmet räknar ut förbrukningen för " +
"en bil antingen:" +"\n"+ "Enligt EU-standard (E) i liter/100km:"+"\n"+
"Eller enligt US-standard (U) i gallons/miles:");

String[] val = {"E", "U", "Avbryt!"};
int svar = showOptionDialog(f,
"Vill du räkna med EU-standard (E)"+
"eller med US-standard (U)",
"Välj standard",
YES_NO_CANCEL_OPTION,
QUESTION_MESSAGE,
null, val, val[2]);

if(svar==0)
eu();

else if(svar==1)
us();

else{
showMessageDialog(null, "Avrbutet");
}

showMessageDialog(null,"HÄR VILL JAG FÅ MITT JÄVLA RESULTAT!!");

repeat=showConfirmDialog(null,"Vill du göra en ny beräkning?");
}while(repeat==0);

System.exit(0);
}

////////////////////////////////////METODER///////////////////////////

static double eu()
{

String indata;
double km;
double liter;

indata=showInputDialog("Hur många kilometer har du kört?");
km=Integer.parseInt(indata);

indata=showInputDialog("Hur många liter bensin har gått åt?");
liter=Integer.parseInt(indata);

double euförbruk=liter/(km/100);

return euförbruk;

}
//////////////////////////////////////////////////////////////////////////////
static double us()
{

String indata;
double km;
double liter;

indata=showInputDialog("Hur många kilometer har du kört?");
km=Integer.parseInt(indata);

indata=showInputDialog("Hur många liter bensin har gått åt?");
liter=Integer.parseInt(indata);

double usförbruk=(liter*3.785)/(km*1.609);

return usförbruk;

}

////////////////////////////////METODER/////////////////////////////
}

Permalänk
Medlem

Spara double-värdet du får från dina metoder i en variabel och skriv sedan ut den i din showMessageDialog.

Permalänk
Medlem

Har testat lagt till euförbruk och usförbruk i min showMessageDialog men det händer ingenting.

Eller var det på något annat sätt du hade tänkt dig?

Permalänk
Medlem

double x; if(svar==0) x = eu(); else if(svar==1) x = us(); else{ showMessageDialog(null, "Avrbutet"); } showMessageDialog(null, x);

Permalänk
Medlem

du måste spara returvärdet:

double ratio = 0; // ... { ratio = eu(); } else { // ... ratio = us(); } // ... showMessageDialog(null,"MITT JÄVLA RESULTAT ÄR: " + ratio);

Sen tycker jag att du ska tänka över metoderna eu() och us(). De innehåller i princip samma saker, det är bara slutberäkningen som är annorlunda. Sålunda kan du flytta ut inmatningarna och helt enkelt låta metoden vara:

static double eu(int km, int liter) { result = liter/(km / 100); return result; }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Fick till det till slut men tack för hjälpen.

Permalänk
Medlem

Undrar fortfarande hur? får inte till det

import java.util.*;
import java.awt.Component.*;
import javax.swing.*;
import static javax.swing.JOptionPane.*;
public class ill
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
JFrame f=new JFrame();
String indata;
double km;
double liter;
int repeat;

do
{
showMessageDialog(null, "Det här programmet räknar ut förbrukningen för " +
"en bil antingen:" +"\n"+ "Enligt EU-standard (E) i liter/100km:"+"\n"+
"Eller enligt US-standard (U) i gallons/miles:");

String[] val = {"E", "U", "Avbryt!"};
int svar = showOptionDialog(f,
"Vill du räkna med EU-standard (E)"+
"eller med US-standard (U)",
"Välj standard",
YES_NO_CANCEL_OPTION,
QUESTION_MESSAGE,
null, val, val[2]);

if(svar==0)eu();

else if(svar==1)us();

else{
showMessageDialog(null, "Avrbutet");
}

showMessageDialog(null,"svaret");

repeat=showConfirmDialog(null,"Vill du göra en ny beräkning?");
}while(repeat==0);

System.exit(0);
}

static double eu(){

String indata;
double km;
double liter;

indata=showInputDialog("Hur många kilometer har du kört?");
km=Integer.parseInt(indata);

indata=showInputDialog("Hur många liter bensin har gått åt?");
liter=Integer.parseInt(indata);

double euförbruk=liter/(km/100);

return euförbruk;

}

static double us(){
String indata;
double km;
double liter;
indata=showInputDialog("Hur många kilometer har du kört?");
km=Integer.parseInt(indata);
indata=showInputDialog("Hur många liter bensin har gått åt?");
liter=Integer.parseInt(indata);
double usförbruk=(liter*3.785)/(km*1.609);
return usförbruk;

}

}

Permalänk
Medlem

uppskatta ett svar snälla

Permalänk
Medlem

tips, använd code-taggarna