2009-08-06, 23:24
  #13
Medlem
Citat:
Ursprungligen postat av Proton
Beror ju helt och hållet på vad scan och in är för typer.

Är det Scanner du avser här eller vad? och in.next()? Vad är det för egenuppfunnet språk som innnehåller det?

I vilket fall som helst så BÖR du lära dej snarast att använda javadocen, och då främst den som finns över språket java.

http://java.sun.com/javase/6/docs/api/

För att svara på din andra fråga, för jag antar att du har googlat själv?

http://www.wellho.net/solutions/java-formatting-to-a-fixed-number-of-decimal-places.html

japp det är scanner. new Scanner. men jag vet ej vad det är för skillnad och till vilka ändamål de bör anvädas till och vilka sorts värden båda kan läsa in.
javadoc? är det man imortera? tex: java.util.*; ?

Min andra fråga har jag inte googlat på utan var i ärlighetensnamn ren slöhet att fråga utan att eta själv men ska kika in länken,
Citera
2009-08-06, 23:41
  #14
Medlem
Protons avatar
Nope, Javadoc är ett verktyg för att dokumentera sin kod och få det hela snyggt och prydligt formaterat(i HTML till å med). Det ser ut som java-s genererade dokumentation när man är klar.

Hade du kollat in länken jag skickade hade du sett ett hyffsat fult frameset, men innehållet är destå trevligare. där är alltså HELA java 6 dokumenterat, paketvis eller klassvis, allt i bokstavsordning. Du kan där slå upp Scanner-klassen synnerligen enkelt och där kolla vilka metoder det finns att tillgå samt dessas eventuella funktion och ännu mer eventuella returtyper. Arvshierarkierna ritas ut där med. Oumbärligt skulle jag kalla det.

Vad är in för nånting, det har du alltså inte lyckats svara på. Omöjligt att sia rätt upp och ner vad du egentligen menar. Är det den in som du får när du skriver System.in som du menar? Återigen, det går att slå upp om man kollar i länken jag skickade vad den gör och vad som skiljer den från en Scanner.
Citera
2009-08-07, 00:22
  #15
Medlem
truperts avatar
Citat:
Ursprungligen postat av Proton
Logisk förklaring

Tack för svaret! Jag tror jag förstod hur du menade! Men kan man inte då på något smidigt sätt skriva att, om vi fortsätter på exemplet, bmi ska vara mellan två värden?
ex
om bmi är större än 20 och mindre än 26 så.. ?

istället för då:
om bmi är större än 20 och bmi är mindre än 26 så.. ?

Jag menar helt enkelt, kan inte då kompilatorn på något vis förstå att jag vill att den ska kolla två olika saker med just bmi utan att jag behöver skriva det?

Edit: Hur såg koden ut i övrigt? Något speciellt att tänka på som jag kan förbättra?
Citera
2009-08-07, 00:52
  #16
Medlem
Protons avatar
Nej jag har inga synpunkter på det sätt du har skrivit koden(vad jag kom ihåg här å nu iaf). En viktig sak att ha i åtanke som nybörjare är dock att från början följa javas namnkonvéntion med gemener och versaler på rätt ställe, men det hade du vad jag såg, en liten reminder bara

En sak till man bör ha i åtanke när man kodar: Man bör se till att hålla koden så enkel och ren som det är möjligt. Det gäller ju att man ska kunna förstå utan allt för mkt tankearbete vad koden gör och varför man har gjort på det ena eller det andra sättet.

Slutligen: Det finns mej veterligen inget sätt att sskriva detta på. Du får nog helt enkelt hålla tillgodo med kod liknande
[PHP]
if(bmi <=3 && bmi >=44)
[/PHP]
Nu kommer nån gnälla om att predikatet i ifsatsen är ömsesidigt uteslutande, men det jag ville ha sagt framgår nog tydligt ändå hoppas jag. Hur du än vrider och vänder på det kommer en binär operator att kräva två operander, en på vardera sidan.
Citera
2009-08-07, 20:16
  #17
Medlem
kvints avatar
Kod:
        if (bmi < 19)
            System.out.println("Du är underviktig!");
        else if ((bmi >= 19) && (bmi < 26))
            System.out.println("Du är idealviktig!");
        else if ((bmi >= 26) && (bmi < 30))
            System.out.println("Du är överviktig!");
        else
            System.out.println("Du lider av fetma!"); 

Borde man inte kunna skriva om det som:
Kod:
        if (bmi < 19)
            System.out.println("Du är underviktig!");
        else if (bmi < 26)
            System.out.println("Du är idealviktig!");
        else if (bmi < 30)
            System.out.println("Du är överviktig!");
        else
            System.out.println("Du lider av fetma!"); 

Om jag inte är helt ute och cyklar...

Eftersom vi i första villkoret kollar om bmi är mindre än 19, så kan vi vara säkra på att om detta vilkoret är falskt så måste bmi vara 19/eller större än 19; så det räcker med att kolla om bmi är mindre än 26 i nästa villkor etc.
__________________
Senast redigerad av kvint 2009-08-07 kl. 20:31.
Citera
2009-08-08, 19:19
  #18
Medlem
klasklätters avatar
Citat:
Ursprungligen postat av kvint
Kod:
        if (bmi < 19)
            System.out.println("Du är underviktig!");
        else if ((bmi >= 19) && (bmi < 26))
            System.out.println("Du är idealviktig!");
        else if ((bmi >= 26) && (bmi < 30))
            System.out.println("Du är överviktig!");
        else
            System.out.println("Du lider av fetma!"); 

Borde man inte kunna skriva om det som:
Kod:
        if (bmi < 19)
            System.out.println("Du är underviktig!");
        else if (bmi < 26)
            System.out.println("Du är idealviktig!");
        else if (bmi < 30)
            System.out.println("Du är överviktig!");
        else
            System.out.println("Du lider av fetma!"); 

Om jag inte är helt ute och cyklar...

Eftersom vi i första villkoret kollar om bmi är mindre än 19, så kan vi vara säkra på att om detta vilkoret är falskt så måste bmi vara 19/eller större än 19; så det räcker med att kolla om bmi är mindre än 26 i nästa villkor etc.

Jodå, det fungerar utmärkt.
Citera
2009-08-09, 18:29
  #19
Medlem
skratta inte nu Men är så att jag vill göra en fullständig uträkning av mitt betygs snitt från gymnasiet. Men vet inte riktigt hur jag ska gå tillväga. Jag skrev ett exempel nedan:
[PHP]import java.util.*;

public class betyg{

public static void main (String[] args){



Scanner in = new Scanner(System.in);


System.out.println("Ange antal 100p kurser samt betyg");
System.out.println("");
System.out.println("");

System.out.println("Ange antal g");
int hg = in.nextInt();

System.out.println("ange antal vg");
int hvg = in.nextInt();

System.out.println("ange antal mvg");
int hmvg = in.nextInt();

//antal kurs poänng
int hgg = hg * 100;
int hvgg = hvg * 100;
int hmvgg= hmvg * 100;
//antal betygs poäng
int gPoints = hgg*10;
int vgPoints= hvgg*15;
int mvgPints= hmvgg*20;
//kontroll
int totalpoint = gPoints + vgPoints + mvgPints;
int totalgrade = hgg+hvgg+hmvg;

System.out.println("total betygs poäng : "+totalpoint);
System.out.println("total studie poäng : "+totalgrade);

//snittet
int snitt=totalpoint/totalgrade;

System.out.println("");
System.out.println("snittet är : "+snitt);
}
} [/PHP]

Saken är den att jag vill att jag ska kunna göra en fullständig uträkning på alla kurser.
Denna gör endast över antalet 100p kurser. Och jag tycker att det är blir på tok förmycket kod om jag ska upprepa denna kod för varje 50,100,150,200poängs kurser. Men snitt värdet blir korrekt om man har runt 2500poäng av kurser.

Nån som kan hjäpa till att göra denna uträkning lite mer lättanvänlig?
__________________
Senast redigerad av MindControll 2009-08-09 kl. 18:36.
Citera
2009-08-09, 19:36
  #20
Medlem
Protons avatar
Citat:
Ursprungligen postat av MindControll
skratta inte nu Men är så att jag vill göra en fullständig uträkning av mitt betygs snitt från gymnasiet. Men vet inte riktigt hur jag ska gå tillväga. Jag skrev ett exempel nedan:
[PHP]import java.util.*;

public class betyg{

public static void main (String[] args){



Scanner in = new Scanner(System.in);


System.out.println("Ange antal 100p kurser samt betyg");
System.out.println("");
System.out.println("");

System.out.println("Ange antal g");
int hg = in.nextInt();

System.out.println("ange antal vg");
int hvg = in.nextInt();

System.out.println("ange antal mvg");
int hmvg = in.nextInt();

//antal kurs poänng
int hgg = hg * 100;
int hvgg = hvg * 100;
int hmvgg= hmvg * 100;
//antal betygs poäng
int gPoints = hgg*10;
int vgPoints= hvgg*15;
int mvgPints= hmvgg*20;
//kontroll
int totalpoint = gPoints + vgPoints + mvgPints;
int totalgrade = hgg+hvgg+hmvg;

System.out.println("total betygs poäng : "+totalpoint);
System.out.println("total studie poäng : "+totalgrade);

//snittet
int snitt=totalpoint/totalgrade;

System.out.println("");
System.out.println("snittet är : "+snitt);
}
} [/PHP]

Saken är den att jag vill att jag ska kunna göra en fullständig uträkning på alla kurser.
Denna gör endast över antalet 100p kurser. Och jag tycker att det är blir på tok förmycket kod om jag ska upprepa denna kod för varje 50,100,150,200poängs kurser. Men snitt värdet blir korrekt om man har runt 2500poäng av kurser.

Nån som kan hjäpa till att göra denna uträkning lite mer lättanvänlig?

Tricket i detta fall är ju att låta beräkningarna hamna i en egen metod och endast skicka in dels multiplerna, och en Map som håller betygen åt dej.

[PHP]
import java.util.*;

public class betyg{

public static void main (String[] args){
int totalPoints = 0;
int totalGrade = 0;

Scanner in = new Scanner(System.in);
Map<String,Integer> grades = new HashMap<String,Grades>();
for(int i = 50; i < 201; i += 50){
grades.clear();
System.out.println("Ange antal " + i +"p kurser samt betyg");
System.out.println("");
System.out.println("");

System.out.println("Ange antal g");
int hg = in.nextInt();
grades.put("g",hg);

System.out.println("ange antal vg");
int hvg = in.nextInt();
grades.put("vg",hvg);

System.out.println("ange antal mvg");
int hmvg = in.nextInt();
grades.put("mvg",hmvg);

Map<String,Integer> tmp = calculateGrades(grades,i);
totalPoint += tmp.get("totalPoint");
totalGrade += tmp.get("totalGrade");

}

System.out.println("total betygs poäng : "+totalpoint);
System.out.println("total studie poäng : "+totalgrade);

//snittet
int snitt=totalpoint/totalgrade;

System.out.println("");
System.out.println("snittet är : "+snitt);
}
public Map<String,Integer>calculateGrades(Map<String,Inte ger>params, int multiple){
//antal kurs poänng
int hgg = params.get("g") * multiple;
int hvgg = params.get("vg") * multiple;
int hmvgg= params.get("mvg") * multiple;
//antal betygs poäng
int gPoints = hgg*10;
int vgPoints= hvgg*15;
int mvgPints= hmvgg*20;
//kontroll
int totalpoint = gPoints + vgPoints + mvgPints;
int totalgrade = hgg+hvgg+hmvg;

HashMap<String,Integer>returnValues = new HashMap<String,Integer>();
returnValues.put("totalPoint",totalpoint);
returnValues.put("totalGrade",totalGrade);
return returnValues;
}
}
[/PHP]
Nånting sånt borde ju åstadkomma det du vill?
Citera
2009-08-09, 19:48
  #21
Medlem
aha tackar så mkt. Ska studera koden vidare och mixtra med ditt exempel så jag lär mig vad som gör vad =) Antar att jag har mkt att lära om vad som gör vad i språket. Det är det jag tycker är lite små svårt med att veta vad alla ord osv gör
Citera
2009-08-09, 19:53
  #22
Medlem
Protons avatar
Ska även lägga in en reservation för att koden kanske inte funkar ritkigt som den ska eftersom den är totalt otestad och okompilerad, men den borde kunna funka sådär, eventuellt med några smärre ändringar. Du har ju annars den här tråden att fråga i
Citera
2009-08-10, 20:39
  #23
Medlem
Vad exakt är en "map" för något? Och hur typ funkar det? I detta samband med det problemet jag vill lösa att jag ska kunna läsa in alla mina betyg, 50-200p kurser och ska sen ange vilket betyg det är på alla kurser som sedan ska räkna ut ekvationen.
Citera
2009-08-10, 21:34
  #24
Medlem
prigass avatar
Citat:
Ursprungligen postat av MindControll
Vad exakt är en "map" för något? Och hur typ funkar det? I detta samband med det problemet jag vill lösa att jag ska kunna läsa in alla mina betyg, 50-200p kurser och ska sen ange vilket betyg det är på alla kurser som sedan ska räkna ut ekvationen.
Nån som kan förklara vad Map är för något bättre än API'et? Inte? http://java.sun.com/javase/6/docs/api/java/util/Map.html

Det du borde göra är att skapa en Kurs.class(eng: Course.class). Som innehåller betyg, poäng, kurskod, deltagarantal, ev. namn, etc. Och kanske använda kursnamnet eller kurskod som key. Medens Kurs klassen är värdet
Ex: Map<"Matte A", new Cource(betygA, 200poäng, kurskod1255 etc)>;
Finns olika sätt att göra detta på.

P.S. Har bara läst det som är "quote'd" :P - för många poster redan
__________________
Senast redigerad av prigas 2009-08-10 kl. 21:37.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in