rikard81Medlem sedan mars 2007357 inlägg
Håller på att lära mig detta med att räkna upp antal angivna tal i Java. Dvs att du anger ett antal tal under 50 och sedan summeras det ut på skärmen hur många tal under 50 du angett. Har kodat ihop ett stycke men räknaren funkar inte. Varför vet jag inte? Den borde väl räkna rätt, eller vart ligger felet?
import javax.swing.*;
public class mag {
public static void main (String[] arg) {
String indata;
int heltal=0;
int underFemtio=0;
while (heltal >= 0) {
indata = JOptionPane.showInputDialog ("Uppge ett tal under 50.");
heltal = Integer.parseInt(indata);
}
if (heltal < 50 && heltal > 0) {
underFemtio++;
}
JOptionPane.showMessageDialog (null, "Tal under 50: " + underFemtio);
System.exit(0);
}
}
ercizMedlem sedan maj 20011 880 inlägg
Du kör din if-sats som ska räkna tal, efter hela while-loopen är klar. Du måste lägga in if-satsen i while-loopen för att den ska köras en gång för varje inmatning.
rikard81Medlem sedan mars 2007357 inlägg
Aha. Mycket tacksam för svaret.
rikard81Medlem sedan mars 2007357 inlägg
rikard81 skrev:
Håller på att lära mig detta med att räkna upp antal angivna tal i Java. Dvs att du anger ett antal tal under 50 och sedan summeras det ut på skärmen hur många tal under 50 du angett. Har kodat ihop ett stycke men räknaren funkar inte. Varför vet jag inte? Den borde väl räkna rätt, eller vart ligger felet?
import javax.swing.*;
public class mag {
public static void main (String[] arg) {
String indata;
int heltal=0;
int underFemtio=0;
while (heltal >= 0) {
indata = JOptionPane.showInputDialog ("Uppge ett tal under 50.");
heltal = Integer.parseInt(indata);
}
if (heltal < 50 && heltal > 0) {
underFemtio++;
}
JOptionPane.showMessageDialog (null, "Tal under 50: " + underFemtio);
System.exit(0);
}
}
Jag citerar mitt eget inlägg här. Om jag vill räkna ut antal tal under 50. Varför måste jag skriva:
if (heltal < 50 && heltal > 0)
?. Varför funkar det inte att skriva enbart:
if (heltal < 50)
?
cascaMedlem sedan feb. 20003 262 inlägg
Anledningen är att du använder heltals-variabeln som "kontroll".
För att avsluta loopen måste man ju mata in ett värde under 0, t.ex -1, och eftersom if-satsen bara kontrollerar att heltal är MINDRE ÄN 50, så räknas även negativa inmatade värden.
rikard81Medlem sedan mars 2007357 inlägg
Aha, Det är ju klart. Det borde man ju kunnat räkna ut själv. Cheers.
rikard81Medlem sedan mars 2007357 inlägg
Lyfter en gammal tråd och går lite offtopic. Har skapat ett program som räknar ut antal angivna tal, som ovan. Kort sagt, man matar in ett antal heltal där programmet sedan räknar ut antalet angivna tal. Nu vill jag att programmet ska räkna ut högsta angivna tal. Har provat med MAX_VALUE men får det inte att funka. Använder mig av int (heltal) men får en massa decimaler ändå? Får inte rätt högsta angivna tal. Väldigt dåligt med info på nätet om detta. Har försökt skapa en variabel av MAX.
import javax.swing.*;
public class skriva {
public static void main (String[] arg) {
String indata;
int heltal=0;
int angivet=0;
int max=0;
while (heltal >= 0) {
indata = JOptionPane.showInputDialog ("Mata in ett heltal");
heltal = Integer.parseInt(indata);
if (heltal >= 0)
angivet++;
max= Integer.MAX_VALUE;
int svar=max;
}
JOptionPane.showMessageDialog (null, "angivna tal" + angivet);
JOptionPane.showMessageDialog (null, "angivna tal" + max);
System.exit(0);
}
}
ercizMedlem sedan maj 20011 880 inlägg
När du har en ny fråga är det bättre att du skapar en ny tråd.
cascaMedlem sedan feb. 20003 262 inlägg
rikard81 skrev:
Lyfter en gammal tråd och går lite offtopic. Har skapat ett program som räknar ut antal angivna tal, som ovan. Kort sagt, man matar in ett antal heltal där programmet sedan räknar ut antalet angivna tal. Nu vill jag att programmet ska räkna ut högsta angivna tal. Har provat med MAX_VALUE men får det inte att funka. Använder mig av int (heltal) men får en massa decimaler ändå? Får inte rätt högsta angivna tal. Väldigt dåligt med info på nätet om detta. Har försökt skapa en variabel av MAX.
Har du kollat dokumentationen? MAX_VALUE i wrapperklassen ger dig största möjliga värde som går att peta in i en integer - inte största värdet i en samling.
Men vet du vad som saknas? Du lägger ju alla tal på hög, så hur ska programmet kunna hålla reda på alla individuella tal sen efter exekvering? Rimligtvis bör du kika på en lämplig "behållare" istället, om du vill kunna få fram största talet.
En array är kanske lämplig att börja med? (Antar att du läser nån kurs i Java?)
Lästips:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html
rikard81Medlem sedan mars 2007357 inlägg
Kanon. Ska kika på dessa dokumentationer. Nej jag läser ingen kurs i java. Försöker lära mig på egen hand, då jag är intresserad. har skaffat mig boken Java direkt, men den tar inte upp MAX_VALUE mer än på ytan. Lämplig behållare? Menar du exempel en separat if? Så du menar att jag ska skippa max_value?
cascaMedlem sedan feb. 20003 262 inlägg
rikard81 skrev:
Kanon. Ska kika på dessa dokumentationer. Nej jag läser ingen kurs i java. Försöker lära mig på egen hand, då jag är intresserad. har skaffat mig boken Java direkt, men den tar inte upp MAX_VALUE mer än på ytan. Lämplig behållare? Menar du exempel en separat if?
Nej, jag menar ett objekt som är byggd för att hålla flera värden - t.ex en Array eller ArrayList (bättre än Array, men lite mer "överkurs" nu kanske).
Läs kapitel 3.8 i Java Direkt - Skansholm kallar arrays "fält". Ibland kallas de också "vektorer", men det är samma sak och ett måste att lära sig!
rikard81Medlem sedan mars 2007357 inlägg
Okey. Tack. Ska kika på detta så får vi se som man blir lite klokare :-)