PrøverlittJava Skrevet 27. august 2015 Del Skrevet 27. august 2015 Har nylig begynt å programmere Har programmert et mattestykke der man har en startsum, en rente og hvor mye man bruker i måneden. Poenget her er at brukeren skal skrive inn de forskjellige faktorene selv. Men jeg trenger begrensninger på: - Renten, så den ikke blir for høy - Totalsummen, i tilfelle brukeren bruker for lite i måneden og startsummen bare vil øke. Problemet mitt er at jeg vet ikke hvordan jeg setter begrensninger i java. Hvis noen kan gi meg en eller fler koder jeg kunne brukt i denne hadde det vært til stor hjelp. Lenke til kommentar
Salvesen. Skrevet 27. august 2015 Del Skrevet 27. august 2015 Har nylig begynt å programmere Har programmert et mattestykke der man har en startsum, en rente og hvor mye man bruker i måneden. Poenget her er at brukeren skal skrive inn de forskjellige faktorene selv. Men jeg trenger begrensninger på: - Renten, så den ikke blir for høy - Totalsummen, i tilfelle brukeren bruker for lite i måneden og startsummen bare vil øke. Problemet mitt er at jeg vet ikke hvordan jeg setter begrensninger i java. Hvis noen kan gi meg en eller fler koder jeg kunne brukt i denne hadde det vært til stor hjelp. Legg ut koden din så er det lettere å komme med forslag. Lenke til kommentar
PrøverlittJava Skrevet 27. august 2015 Forfatter Del Skrevet 27. august 2015 (endret) import java.util.Scanner;class ForsteProgram{ public static void main(String[]args) { Scanner in = new Scanner(System.in); System.out.print("Write the starting sum for your account: "); float orgSum = in.nextFloat(); System.out.print("How much do you intend to spend mounthly: "); int mSpent = in.nextInt(); //System.out.print("The current rent a year: "); //double cRent = in.nextDouble(); int goEmpty = 0; while (orgSum > 0) { orgSum = (float)(orgSum * 1.005 - mSpent); goEmpty = (goEmpty + 1); } if (goEmpty <= 1) { System.out.println("If you keep that up, you will have money forever. PS we dont count taxes"); } else { System.out.println("It will take " + goEmpty + " mounths before run out of money"); } }} - har ikke laget at du kan skrive inn rente selv enda - hvis brukeren skriver f.eks. 1 på hvor mye m. blir det uendelig - Er sikkert et par andre feil, men det retter jeg opp som jeg går Endret 27. august 2015 av PrøverlittJava Lenke til kommentar
jonny Skrevet 28. august 2015 Del Skrevet 28. august 2015 Her er en måte å løse det på, bare spør om du vil ha forklaring på noe. import java.util.Scanner; class ForsteProgram { private final static Scanner IN = new Scanner(System.in); private final static double MAX_RENT = 25.0; private static double getDoubleUserInput(Double min, Double max) { double result = IN.nextDouble(); while ((min != null && result < min) || (max != null && result > max)) { if (min == null) System.out.print("Value too large (max = " + max + "), try again: "); else if (max == null) System.out.print("Value too small (min = " + min + "), try again: "); else System.out.print("Value outside valid range (" + min + ".." + max + "), try again: "); result = IN.nextDouble(); } return result; } public static void main(String[]args) { System.out.print("Write the starting sum for your account: "); double orgSum = getDoubleUserInput(null, null); System.out.print("How much do you intend to spend mounthly: "); double mSpent = getDoubleUserInput(0.0, null); System.out.print("The current rent a year: "); double cRent = getDoubleUserInput(0.0, MAX_RENT); int months = 0; double newSum = orgSum; while (newSum > 0.0) { newSum = newSum * Math.pow(((100.0 + cRent) / 100.0), 1.0/12) - mSpent; if (newSum >= orgSum) break; months++; } if (months == 0 && orgSum >= 0.0) { System.out.println("If you keep that up, you will have money forever. PS we dont count taxes"); } else { System.out.println("It will take " + months + " months before you run out of money"); } } } Lenke til kommentar
PrøverlittJava Skrevet 29. august 2015 Forfatter Del Skrevet 29. august 2015 Her er en måte å løse det på, bare spør om du vil ha forklaring på noe. import java.util.Scanner; class ForsteProgram { private final static Scanner IN = new Scanner(System.in); private final static double MAX_RENT = 25.0; private static double getDoubleUserInput(Double min, Double max) { double result = IN.nextDouble(); while ((min != null && result < min) || (max != null && result > max)) { if (min == null) System.out.print("Value too large (max = " + max + "), try again: "); else if (max == null) System.out.print("Value too small (min = " + min + "), try again: "); else System.out.print("Value outside valid range (" + min + ".." + max + "), try again: "); result = IN.nextDouble(); } return result; } public static void main(String[]args) { System.out.print("Write the starting sum for your account: "); double orgSum = getDoubleUserInput(null, null); System.out.print("How much do you intend to spend mounthly: "); double mSpent = getDoubleUserInput(0.0, null); System.out.print("The current rent a year: "); double cRent = getDoubleUserInput(0.0, MAX_RENT); int months = 0; double newSum = orgSum; while (newSum > 0.0) { newSum = newSum * Math.pow(((100.0 + cRent) / 100.0), 1.0/12) - mSpent; if (newSum >= orgSum) break; months++; } if (months == 0 && orgSum >= 0.0) { System.out.println("If you keep that up, you will have money forever. PS we dont count taxes"); } else { System.out.println("It will take " + months + " months before you run out of money"); } } } double orgSum = getDoubleUserInput(null, null); og double mSpent = getDoubleUserInput(0.0, null); legger du inn begrensinger, men hva vil da null si? hva som helst? Antok før at 0.0 var null Har heller aldri sett Math.pow, months++ eller break før. Hva vil dette si? Lenke til kommentar
jonny Skrevet 29. august 2015 Del Skrevet 29. august 2015 Hvis verdien er 'null', vil det ikke være noen begrensning. Du ser av signaturen til 'getDoubleUserInput' at jeg bruker 'Double' istedenfor 'double', som gir meg muligheten til å gi inn verdien 'null' i tillegg til alle mulige 'double'-verdier. 'while'-uttrykket i 'getDoubleUserInput' gjør at verdien brukeren oppgir kun sjekkes mot 'min'/'max'-verdiene hvis disse ikke er null. Math.pow(x, y) er en funksjon som gir deg resultatet av 'x opphøyd i y'. 'months++' er en kortere måte og skrive 'months = months + 1' eller 'months += 1' på. Du kan også skrive '++months'. For sammensatte uttrykk må du passe på å bruke det riktig, f.eks. vil uttrykket 'int months = 1; System.out.println(months++);' skrive ut '1', mens 'int months = 1; System.out.println(++months);' skrive ut '2'. Når '++' skrives før variabelnavnet vil variabelen endres før variabelen blir brukt, ved '++' etter variabelnavnet vil variabelen endres etter at variabelen blir brukt. 'break' er en måte å avbryte en løkke eller et 'switch'-statement på. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå