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.
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
}
public static void main(String[] args) throws IOException {
//Lite skit för uträkningarna
int A1 = 0; //Antal män
int A2 = 0; //Antal kvinnor
int G1 = 0; //Den sammanlagda åldern på män
int G2 = 0; //Den sammanlagda åldern på kvinnor
double M1 = 0; //Medelåldern för män
double M2 = 0; //Medelåldern för kvinnor
//Variabel som används för att lagra input från användaren
String userInput = "";
//Why? Because!
final String MAN = "m";
final String WOMAN = "k";
final String YES = "j";
final String NO = "n";
//Skräp
boolean killLoop = false;
//För att kunna läsa från konsollen
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (!killLoop) //Kör tills användaren inte lägger till fler personer
{
System.out.println("\nMan eller kvinna (m/k): ");
userInput = br.readLine(); //Hämta in det som användaren skriver i konsollen
System.out.println("\nAnge personens ålder: ");
if (userInput.equals(MAN)) {
A1++; //Lägg en man till samlingen
userInput = br.readLine(); //Hämta in det som användaren skriver i konsollen
G1 = G1 + Integer.parseInt(userInput);
} else if (userInput.equals(WOMAN)) {
A2++; //Lägg en kvinna till samlingen
userInput = br.readLine(); //Hämta in det som användaren skriver i konsollen
G2 = G2 + Integer.parseInt(userInput);
}
System.out.println("\nLägg till en till person (j/n): ");
userInput = br.readLine(); //Hämta in det som användaren skriver i konsollen
if (userInput.equals(NO)) { //Om användaren har valt att inte lägga till fler personer
if (A1 > 0) { //Undvik att dela med noll... Obra.
M1 = G1 / A1;
}
System.out.println("\nAntal män: " + A1);
System.out.println("Medelåldern för män: " + M1);
if (A2 > 0) {
M2 = G2 / A2;
}
System.out.println("\nAntal kvinnor: " + A2);
System.out.println("Medelåldern för kvinnor: " + M2);
killLoop = true; //För att avsluta loopen och programmet.
} else if (userInput.equals(YES)) {
//Gör inget... huvudloopen fortsätter
}
}
}
}
[/PHP]
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.
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.
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.
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.
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.