2009-04-16, 20:27
  #13
Medlem
Flipkins avatar
Citat:
Ursprungligen postat av Proton
while(


Haha tack o lov är jag smart nog att förstå just det


Äh... jag tänker så det knakar just nu, får återkomma med mitt resultat.
Citera
2009-04-16, 21:14
  #14
Medlem
Holger Meinss avatar
Citat:
Ursprungligen postat av Flipkin
Blir en jävla massa posts av mig här nu.
Undrar om någon skulle kunna skriva början på while-satsen, för att ge mig en aning om hur det skall se ut? Efter det så bör jag inte ha några större problem med att färdigställa resten själv.
Nu kan jag inte Java men jag kan försöka hjälpa till ändå. Loopen ska köras ända tills man säger att den ska sluta, så det man skulle kunna göra är:
Kod:
char ans = y; //Skapar en bokstavsvariabel och sätter värdet till "y"
while(ans == y)){    //Kör så länge som ans är y
       //Kod som gör någonting
       //Kod som gör något annat

      cout << "Vill du fortsätta? (y/n)"; //Fråga om användaren vill fortsätta
      cin >> ans;                              //Läs in svaret
}
Nu kommer inte den koden att fungera för dig, för det är C och inte Java, men principen borde vara densamma. Inläsnings/utskriftsmetoden är olika b.la. Om ans == y så fortsätter loopen, är ans == n så stannar den.

Det man skulle kunna göra snyggare är att använda do-while istället så slipper man sätta ans = y innan loopen.
__________________
Senast redigerad av Holger Meins 2009-04-16 kl. 21:19.
Citera
2009-04-16, 21:25
  #15
Medlem
Flipkins avatar
Ser detta helt galet ut? Isf, vad är det jag gör fel?
Jag har lyckats skriva ett program som kan ta in information om en person är man eller kvinna, och sedan ta in personens ålder, och efter det skriva ut "Medelåldern är: " xxx

Kanske har suttit lite för många klamrar här och var, och behöver jag ens 2 st while satser? Eller räcker en?



Och det är väl där While loopen kommer in, då jag behöver få det upprepat, tills det annars kommer en TILL valruta (antar jag) där någon kan bestämma om dom skall fortsätta eller få det utskrivet...

Tack för hjälpen btw Holger!

Kod:
int kvinnoAntal = 0;
int mansAntal = 0;

int knappNr = JOptionPane.showConfirmDialog("Är du man?");

while(knappNr == 0){

kvinnoAntal = kvinnoAntal + k
k = k + 1
}

while(knappNr == 1){

mansAntal = mansAntal + k
k = k + 1
}
Citera
2009-04-16, 21:42
  #16
Medlem
zelamers avatar
Det du behöver är en stor while-loop som körs så länge som programmet ska köras. Programmet kan funka enligt följande:

Så länge som användaren väljer att lägga till personer...

Fråga om personen är man eller kvinna

Om person är man...
Öka antalet män
Fråga om mannens ålder
Plussa på männens totala ålder med vad användaren anger

Om person är kvinna...
Öka antalet kvinnor
Fråga om kvinnans ålder
Plussa på kvinnornas totala ålder med vad användaren anger

Fråga om användaren vill lägga till fler personer

Om nej...
Printa ut antalet män
Printa ut männens medelålder
Printa ut antalet kvinnor
Printa ut kvinnornas medelålder
Avsluta while-loopen

annars...

Gör inget. While-loopen fortsätter och programmet frågar igen om personen är man eller kvinna.


Om det skulle krisa sig totalt:
Citera
2009-04-16, 21:46
  #17
Medlem
Flipkins avatar
Tack för svaret Zelamer! Har inte kikat på spoilern, ser det som en sista utväg! Okej kanske inte sista utväg, men jag tar en titt på den om det skulle krisa något enormt.

Jag har pillat lite och kommit fram till ett... "skal" antar jag att man kan kalla det. Anledningen till att jag lagt till "genomSnittMan" och kvinna på showMessageDialog är för att jag vill få en bild av hur det skall se ut. Såklart skall dom ersättas med resultatet av uträkningen av deras genomsnittsåldrar, men eftersom dom uträkningarna inte är med så kan jag inte hänvisa dom i showmessagedialog rutorna.

Vad tycks?

Kod:
import javax.swing.*;
public class Namnlos {
public static void main(String[] arg) {


int knappNr;

do {

knappNr = JOptionPane.showConfirmDialog(null, "Är du man?");
String s = JOptionPane.showInputDialog("Din ålder?");
int kvinnoAlder = Integer.parseInt(s);

int kvinnoAntal = 25;

int genomsnitt = kvinnoAlder/kvinnoAntal;

knappNr = JOptionPane.showConfirmDialog(null, "Vill du göra en ny beräkning?", 

"Fråga", JOptionPane.YES_NO_OPTION);

} while (knappNr == 0);



JOptionPane.showMessageDialog(null, "Genomsnittsålder för män : " + 

"genomSnittMan");
JOptionPane.showMessageDialog(null, "Genomsnittsålder för kvinnor : " + 

"genomSnittKvinna");

System.exit(0);
}
}
__________________
Senast redigerad av Flipkin 2009-04-16 kl. 22:00.
Citera
2009-04-16, 21:55
  #18
Medlem
fittPlusPluss avatar
nu kan jag inte java men det ser ut som att du är helt ute och cycklar, du ska/behöver inte ha två while loop, det räcker med en stor med några if satser i.
Citera
2009-04-16, 22:04
  #19
Medlem
zelamers avatar
Nu ser det helt klart bättre ut. Du vill nog kolla av knappNr efter första frågan för att kunna agera olika beroende på vilket kön personen som blir tillagd har. Du har nästan löst uppgiften.
Citera
2009-04-16, 22:15
  #20
Medlem
Flipkins avatar
Tror faktiskt att jag har löst uppgiften nu

Ta en titt på detta och säg om det ser bra ut

Kod:
import javax.swing.*;

  public class Namnlos {
     public static void main(String[] arg) {

     int a1 = 0;
     int a2 = 0;
     int g1 = 0;
     int g2 = 0;
     double m1 = 0;
     double m2 = 0;

int knappNr;
do {

knappNr = JOptionPane.showConfirmDialog(null, "Är du man?", "Fråga", JOptionPane.YES_NO_OPTION);

  if (knappNr == 0)
   a1 = a1 + 1;

  else 
   a2 = a2 + 1;

String s = JOptionPane.showInputDialog("Din ålder?");
    int alder = Integer.parseInt(s);

  if (knappNr == 0)
    g1 = g1 + alder;

  else 
    g2 = g2 + alder;


knappNr = JOptionPane.showConfirmDialog(null, "Vill du göra en ny beräkning?", "Fråga", JOptionPane.YES_NO_OPTION);

} while (knappNr == 0); 

m1 = g1/a1;
m2 = g2/a2;

JOptionPane.showMessageDialog(null, "Genomsnittsålder för män : " + m1);
JOptionPane.showMessageDialog(null, "Genomsnittsålder för kvinnor : " + m2);

    System.exit(0);
   }
}
Citera
2009-04-16, 22:28
  #21
Medlem
zelamers avatar
Ser ju ut att kunna funka. En petitess bara... Man skulle skriva ut antalet män och kvinnor också i slutet (a1 och a2)
Citera
2009-04-16, 22:33
  #22
Medlem
Flipkins avatar
Citat:
Ursprungligen postat av zelamer
Ser ju ut att kunna funka. En petitess bara... Man skulle skriva ut antalet män och kvinnor också i slutet (a1 och a2)

Aa jag fixade det precis. Har dock ett litet problem. Väljer jag bara män, och sedan väljer att inte göra fler uträkningar, då stänger programmet ned sig. Borde det inte isf visa Antal män : xx
Männens genomsnittsålder : xx

Antal kvinnor : 0
Kvinnors genomsnittsålder : 0

Måste programmet ha med både kvinnor och män för att kunna skriva ut allt?
__________________
Senast redigerad av Flipkin 2009-04-16 kl. 22:41.
Citera
2009-04-16, 22:44
  #23
Medlem
zelamers avatar
Men det är ju för att du då delar med noll i uträkningen m2 = g2/a2. Att dela med noll är hyfsat obra. Samma sak gäller om du bara skulle välja kvinnor.

Släng dit en koll runt respektive beräkning där du kollar att a1 > 0 för beräkningen av männens medelålder och a2 > 0 för kvinnornas dito.
Citera
2009-04-16, 22:46
  #24
Medlem
Flipkins avatar
Edit: Aja orkar inte pilla på det. Lär få godkänt på min uppgift hoppningsvis. Tack allihopa för hjälpen, ni är guldvärda!
__________________
Senast redigerad av Flipkin 2009-04-16 kl. 23:02.
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