Forum: hjälp med java

Forum huvudsida -> Programmering -> hjälp med java

Sidor: 1

Till botten

Villemo 12:13 - 22:a Februari 2008 | Post #1
Medlem
Inlägg: 7


Skicka PM
Hej!
Jag läser en nybörjarkurs i Java. Jag ska skapa ett program som>>>

Gör ett program som läser in ett okänt antal positiva heltal (när ett negativt värde anges avslutas inmatningsmöjligheten).
Skriv sedan ut hur många angivna värden som är större än 100, hur många som är mindre än 100, samt hur många som är exakt 100. Skriv även ut hur många värden som totalt är angivet (det negativa värdet ska inte räknas med).
Skriv även ut medelvärdet för talgrupperna över 100 respektive under 100

Jag har kommit så här långt>>

  1. import javax.swing.*;
  2.  
  3. public class labb3 {
  4.  
  5. public static void main (String[] arg) {
  6. String indata;
  7. int heltal;
  8.  
  9. do {
  10. System.out.println("Uppge ett heltal!");
  11. indata = JOptionPane.showInputDialog
  12. ("Uppge ett heltal! Positivt/negativt.");
  13. heltal = Integer.parseInt(indata);
  14. } while (heltal >= 0);
  15.  
  16. heltal++;
  17.  
  18. int talUnderHundra = 0;
  19. int talOverHundra = 0;
  20. int talHundra = 0;
  21. int summaUnderHundra = 0;
  22. int summaOverHundra = 0;
  23.  
  24.  
  25. if (heltal < 100){
  26. talUnderHundra++;
  27. }
  28. else
  29. if (heltal > 100)
  30. talOverHundra++;
  31.  
  32. else
  33. if (heltal == 100)
  34. talHundra++;
  35.  
  36.  
  37. String message = "Sammanfattning" + "n" +
  38. "Antal tal över 100: " + talOverHundra + "n"+
  39. "Antal tal under 100: " + talUnderHundra + "n"+
  40. "Antal tal exakt 100: " + talHundra + "n"+
  41. "Totalt antal angivna värden: " + heltal;
  42.  
  43.  
  44. JOptionPane.showMessageDialog (null, message);
  45.  
  46.  
  47.  
  48. System.exit(0);
  49.  
  50. }
  51. }


Jag får loopen att fungera och den slutar när jag skriver in ett negativt tal. Men när programmet ska läsa in och sammanfatta heltalen så fungerar det inte som det ska.

Har någon lust att ge mig några tips?

Smiley






Slash 14:01 - 22:a Februari 2008 | Post #2
Medlem
Inlägg: 141


Skicka PM
Hej.

Grejen med din inmatningsslinga är att den inte gör något med alla tal som du faktiskt är intresserad av.

Antar att du vill göra nånting liknande:

  1. while (true) {
  2.  
  3. heltal = /* läs in heltal från användaren här */
  4.  
  5. if (heltal >= 0) {
  6. if (heltal > 100) {
  7. talOverHundra++;
  8. summaOverHundra += heltal;
  9. } else if (heltal < 100) {
  10. talUnderHundra++;
  11. summaUnderHundra += heltal;
  12. } else {
  13. talHundra++;
  14. }
  15. } else {
  16. break; // Det angivna talet var negativ, avbryt slingan
  17. }
  18. }


Det enda jag har gjort är att flytta det du tidigare hade utanför slingan till innanför slingan. Sedan bör du kunna räkna ut medelvärde, antal tal och liknande med information du har.

  1. totalt = talUnderHundra + talOverHundra + talHundra;
  2. medelUnderHundra = summaUnderHundra / (float)talUnderUndra // Använd (float) här om du inte vill ha ett heltalsmedel, i annat fall kan du skippa det
  3. // etc..


-------------------------
Ingen sigantur!

Senast redigerad 14:04 - 22:a Februari 2008


Villemo 14:44 - 22:a Februari 2008 | Post #3
Medlem
Inlägg: 7


Skicka PM
    Citat av Slash:


  1. while (true) {
  2.  
  3. heltal = /* läs in heltal från användaren här */
  4.  
  5. if (heltal >= 0) {
  6. if (heltal > 100) {
  7. talOverHundra++;
  8. summaOverHundra += heltal;
  9. } else if (heltal < 100) {
  10. talUnderHundra++;
  11. summaUnderHundra += heltal;
  12. } else {
  13. talHundra++;
  14. }
  15. } else {
  16. break; // Det angivna talet var negativ, avbryt slingan
  17. }
  18. }



  1. totalt = talUnderHundra + talOverHundra + talHundra;
  2. medelUnderHundra = summaUnderHundra / (float)talUnderUndra // Använd (float) här om du inte vill ha ett heltalsmedel, i annat fall kan du skippa det
  3. // etc..


Ska jag använda min " do while" loop också eller ersätter din kod den?

Ang float> Jag ska ju räkna ut ett medelvärde så det blir nog bra! Blir det heltals medel på alla inslagna tal?

Tack för hjälpen! Ska testa när jag kommer hem ikväll..
Smiley




FunkyChicken 17:54 - 22:a Februari 2008 | Post #4
Nyhetsredaktör
Inlägg: 800


Skicka PM
  1. import javax.swing.*;
  2.  
  3. public class labb3 {
  4.  
  5. public static void main (String[] arg) {
  6.  
  7. String indata;
  8. int heltal = 0;
  9. int talUnderHundra = 0;
  10. int talOverHundra = 0;
  11. int talHundra = 0;
  12. int summaUnderHundra = 0;
  13. int summaOverHundra = 0;
  14.  
  15. while (heltal >= 0) {
  16. System.out.println("Uppge ett heltal!");
  17. indata = JOptionPane.showInputDialog
  18. ("Uppge ett heltal! Positivt/negativt.");
  19. heltal = Integer.parseInt(indata);
  20.  
  21. if (heltal < 100){
  22. talUnderHundra++;
  23. summaUnderHundra += heltal;
  24. }
  25. else
  26. if (heltal > 100)
  27. {
  28. talOverHundra++;
  29. summaOverHundra += heltal;
  30. }
  31. else
  32. if (heltal == 100)
  33. talHundra++;
  34. }
  35.  
  36. String message = "Sammanfattning" + "n" +
  37. "Antal tal över 100: " + talOverHundra + "n"+
  38. "Antal tal under 100: " + talUnderHundra + "n"+
  39. "Antal tal exakt 100: " + talHundra + "n"+
  40. "Totalt antal angivna värden: " + (talOverHundra + talUnderHundra + talHundra) +
  41. " Medel över hundra: " + (summaOverHundra / talOverHundra) +
  42. " Medel under hundra: " + (summaUnderHundra / talUnderHundra);
  43.  
  44. JOptionPane.showMessageDialog (null, message);
  45.  
  46. System.exit(0);
  47. }
  48. }



Sådär kanske?
Se till att du verkligen förstår hur loopar fungerar!


EDIT: Du hade en mystisk heltal++; också. Det verkar som att du försökt använda heltal-variabeln både för att lagra input från användaren och som räknare i loopen. Läs på om loopar igen!


Senast redigerad 18:00 - 22:a Februari 2008


Villemo 18:45 - 22:a Februari 2008 | Post #5
Medlem
Inlägg: 7


Skicka PM
Sådär kanske?
Se till att du verkligen förstår hur loopar fungerar!


Det ska jag göra! Jag har läst på mycket men jag tycker att informationen är lite knapphändig i böckerna.. det finns information men det är mycket som man ska komma på själv tycker jag! Men snart kommer jag väl in i rätt tankesätt hoppas jag!

Hur kommer det sig att du ville använda while loopen och inte do while som jag hade använt?

Tack för hjälpen!

Smiley




FunkyChicken 20:53 - 22:a Februari 2008 | Post #6
Nyhetsredaktör
Inlägg: 800


Skicka PM
    Citat av Villemo:

Hur kommer det sig att du ville använda while loopen och inte do while som jag hade använt?



Det är bara en smaksak. Det finns liksom ingen anledning att skriva två satser när det räcker med en. Vet inte om det finns någon konvention, men jag tycker det blir överskådligare att ha villkoret överst i loopen (om det går) och while() är det vanligaste skrivsättet. Men man får bedöma från gång till gång vad som passar bäst.


EDIT:
OBS: Bug hittad!
Rad 21 borde förstås vara
if (heltal < 100 && heltal > 0){
Annars halkar ju det sista (negativa) värdet med i statistiken!


Senast redigerad 20:57 - 22:a Februari 2008


Villemo 00:08 - 23:e Februari 2008 | Post #7
Medlem
Inlägg: 7


Skicka PM
Hej igen,
nu har jag testat programmet. Perfekt! ...terigen.. tack för hjälpen.

Jag tror poletten föll ner ang loopar nu när jag såg ditt förslag. Speciellt när det gäller vart {} ska placeras.
:)




Sidor: 1

Forum huvudsida -> Programmering -> hjälp med java
Atom feed

Du får inte posta i den här tråden | Till toppen