magnus1992 Skrevet 6. september 2012 Del Skrevet 6. september 2012 Ehh. Sliter med en liten oppgave her. Når jeg skal skrive ut for eksempel grunnLonn får jeg beskjed om at den ikke er knyttet til noen variabel. Hjelp`? import java.util.*; public class Lek { public static void main(String [] args) { Scanner tast = new Scanner(System.in); String navn; int timelonn = 0; double timer[] = new double[5]; double grunnLonn[] = new double[5]; double overtid[] = new double[5]; double total[] = new double[5]; double totalPrint[]= new double[5]; System.out.println("Ansattes navn: "); navn=tast.nextLine(); System.out.println("Timelønn: "); timelonn=tast.nextInt(); for(int i=1; i<=4; i++) { System.out.println("Hvor lenge jobbet du i uke " + i); timer[i]=tast.nextDouble(); if (timer[i] > 40) { grunnLonn[i]= (timelonn * timer[i]); overtid[i]= (timelonn * 0.5) * (timer[i]-40); total[i]= (grunnLonn[i] + overtid[i]); }else{ grunnLonn[i]= (timelonn * timer[i]); } System.out.println("\t\tLønnsslipp for" + "\t" + navn + "\t" ); System.out.println(grunnLonn[i]); } System.out.println(grunnLonn[i]); //!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! her vil den ikke skrive ut i, og i regner heller ikke sammen totalen } } Lenke til kommentar
Hieronymus Skrevet 6. september 2012 Del Skrevet 6. september 2012 (endret) Variabelen i er bare synlig innenfor for-løkka, siden den er definert inne i for-statementet. Endret 6. september 2012 av Hieronymus Lenke til kommentar
magnus1992 Skrevet 6. september 2012 Forfatter Del Skrevet 6. september 2012 Variabelen i er bare synlig innenfor for-løkka, siden den er definert inne i for-statementet. Hvordan skal jeg da deklarere for å kunne bruke i senere? Lenke til kommentar
Hieronymus Skrevet 6. september 2012 Del Skrevet 6. september 2012 (endret) Hvordan skal jeg da deklarere for å kunne bruke i senere? int i; for(i=1; i<=4; i++) { Endret 6. september 2012 av Hieronymus Lenke til kommentar
GeirGrusom Skrevet 6. september 2012 Del Skrevet 6. september 2012 Men husk at gjenbruk av variabler generelt er en uting. La variabler gå ut av scope så fort de ikke er nødvendig lenger. Da kan du gjenbruke symbolet, og Java compileren kan gjøre en statisk analyse av uinitialiserte eller ubrukte verdier. Lenke til kommentar
magnus1992 Skrevet 6. september 2012 Forfatter Del Skrevet 6. september 2012 Gjorde litt om på koden, og slik den er nå fungerer den iallefall... import java.util.*; public class ObligB { public static void main(String [] args) { Scanner tast = new Scanner(System.in); String navn; int timelonn = 0; double timer[] = new double[5]; double grunnLonn[] = new double[5]; double sum[]= new double[5]; double overtid[] = new double[5]; double total[] = new double[5]; int i=1; System.out.println("Ansattes navn: "); navn=tast.nextLine(); System.out.println("Timelønn: "); timelonn=tast.nextInt(); while (i <=4) { System.out.println("Hvor lenge jobbet du i uke " + i); timer[i]=tast.nextDouble(); if (timer[i] > 40) { grunnLonn[i]= (timelonn * timer[i]); overtid[i]= (timelonn * 0.5) * (timer[i]-40); total[i]= (grunnLonn[i] + overtid[i]); }else{ total[i]= (timelonn * timer[i]); grunnLonn[i]= (timelonn * timer[i]); //overtid[i]= String.substring ("Ingen overtid"); } System.out.println("\t\tLønnsslipp for" + "\t" + navn); System.out.println(); System.out.println("Timer" + "\t\tLønn" + "\t\tGrunnlønn" + "\tOvertid" + "\t\tTotal"); System.out.println(timer[i] + "\t\t" + timelonn + "\t\t" + grunnLonn[i] + "\t\t" + overtid[i] + "\t\t" + total[i]); i++; } for(int telle=0; telle<grunnLonn.length; telle++) { sum[1]+=grunnLonn[telle]; } for(int telle=0; telle<overtid.length; telle++) { sum[2]+=overtid[telle]; } for(int telle=0; telle<total.length; telle++) { sum[3]+=total[telle]; } for(int telle=0; telle<timer.length; telle++) { sum[0]+=timer[telle]; } System.out.println(); System.out.println("\t\tTotal lønnsslipp for" + "\t" + navn); System.out.println(); System.out.println("Timer" + "\t\tLønn" + "\t\tGrunnlønn" + "\tOvertid" + "\t\tTotal"); System.out.println(sum[0] + "\t\t" + timelonn + "\t\t" + sum[1] + "\t\t" + sum[2] + "\t\t" + sum[3]); } } Endringer jeg kan gjøre? Har lyst å loope den siste infoen slik at timer, grunnlønn osv blir plusset på seg selv slik at jeg kan lage en total lønnsslipp. Lenke til kommentar
Persn Skrevet 6. september 2012 Del Skrevet 6. september 2012 Hvis lengden på tabellene grunnLonn, timer osv. alltid er fem så ser jeg ikke noen grunn til at du skal foreta summeringa i fire separate for-løkker, da får du jo fire ganger så mye iterasjoner som du egentlig behøver. Slå alt inn i en felles for-løkke istedet. Lenke til kommentar
magnus1992 Skrevet 6. september 2012 Forfatter Del Skrevet 6. september 2012 Hvis lengden på tabellene grunnLonn, timer osv. alltid er fem så ser jeg ikke noen grunn til at du skal foreta summeringa i fire separate for-løkker, da får du jo fire ganger så mye iterasjoner som du egentlig behøver. Slå alt inn i en felles for-løkke istedet. Er litt treig til å tenke nå, men skjønner hva du mener. Har ikke lest så mye om for-løkker så er ikke sikker på hvordan jeg skal starte... Lenke til kommentar
Persn Skrevet 6. september 2012 Del Skrevet 6. september 2012 En basic for-løkke er bygd opp slik: for(1;2;3){ 4 } Hvor: 1 er startbetingelsen, 2 er betingelsen for hvor langt for-løkka skal gå, 3 er i++ eller noe som får løkka til å bevege seg mot betingelsen i punkt 2, og 4 består av koden du vil at løkka skal utføre for hver gjennomgang. 1: Deklarer og initier ett heltall til 0, alle tabeller starter med indeksverdi på 0. 2: Sett at for-løkka skal gå ut lengda til hvilken som helst av grunnLonn, overtid, total eller telle. Alle har samme lengde så det spiller ingen rolle hvilken. 3: Legg til heltallet fra punkt 1. 4: Sett inn summeringa fra de fire for-løkkene her. Lenke til kommentar
magnus1992 Skrevet 6. september 2012 Forfatter Del Skrevet 6. september 2012 Takk. Skal prøve det i morgen. Lenke til kommentar
Carana Skrevet 11. september 2012 Del Skrevet 11. september 2012 INF1000 Oblig 1 oppg B2? Bare gjetter ;p 1 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å