Defo Skrevet 25. august 2013 Forfatter Del Skrevet 25. august 2013 int resultat = 0; i det du deklarerer den. Takker Hvorfor må det gjøres egentlig? Blir ikke variabelen "resultat" initialisert uansett nedenfor med "if" setningene? Lenke til kommentar
Fred7555 Skrevet 25. august 2013 Del Skrevet 25. august 2013 Hva om tallet er likt? Personlig hadde jeg skiftet siste if-setning til kun else. if (førstetall > andretall) resultat = førstetall; else resultat = andretall Lenke til kommentar
jonny Skrevet 25. august 2013 Del Skrevet 25. august 2013 Eller kortversjonen, slik: int resultat = førstetall > andretall ? førstetall : andretall; Lenke til kommentar
Defo Skrevet 25. august 2013 Forfatter Del Skrevet 25. august 2013 Takker for gode innspill Lenke til kommentar
LordjOX Skrevet 27. august 2013 Del Skrevet 27. august 2013 Eller ved å bruke andre deler av java biblioteket. int høyeste = java.lang.Math.max(første, andre); Lenke til kommentar
Defo Skrevet 29. august 2013 Forfatter Del Skrevet 29. august 2013 Da hadde man støtt på et nytt problem... Main2 klassen skal hente ut innholdet Kursbok2 klassen sin "visTittel" metode, og skrive det ut på skjermen via et dialogvindu. Det ser logisk riktig ut for meg, men vil ikke kompilere... Lenke til kommentar
Lycantrophe Skrevet 29. august 2013 Del Skrevet 29. august 2013 Hvorfor poster du bilder i stedet for å copy-paste teksten? visTittel har ingen retur-type, og du returnerer heller aldri noe fra den. Lenke til kommentar
Defo Skrevet 29. august 2013 Forfatter Del Skrevet 29. august 2013 Hvorfor poster du bilder i stedet for å copy-paste teksten? visTittel har ingen retur-type, og du returnerer heller aldri noe fra den. Fordi da blir det seende slik ut: public class Kursbok2 { public visTittel() { String emne = "Matte"; } } Kjappere å poste bilde da imo Hva må gjøres i praksis for å gjøre det du beskriver? Lenke til kommentar
jonny Skrevet 30. august 2013 Del Skrevet 30. august 2013 Hvorfor blir det seende slik ut? Når jeg setter inn en kodeblokk ser det slik ut: public class Kursbok2 { public String visTittel() { return "Matte"; } } Lenke til kommentar
Fred7555 Skrevet 30. august 2013 Del Skrevet 30. august 2013 Som sagt over, så returnerer ikke visTittel noen verdi. Det eneste metoden gjør, er å sette emne = "Matte", for å så returnere til main-metoden. Jeg hadde gjort noe ala: import javax.swing.JOptionPane; public class Main2 { public static void main(String[] args) { Kursbok2 kursbok2 = new Kursbok2("Matte"); JOptionPane.showDialoge(null, kursbok2.visTittel()); } } public class Kursbok2 { private String tittel; public Kursbok2(String tittel) { this.tittel= tittel; } public String visTittel() { return tittel; } } Da setter du tittelen i den initialiseres, og den skrives ut(returneres) via visTittel()-metoden. Lenke til kommentar
Lycantrophe Skrevet 30. august 2013 Del Skrevet 30. august 2013 (endret) Fordi da blir det seende slik ut: Kjappere å poste bilde da imo Hva må gjøres i praksis for å gjøre det du beskriver? #1: Nei, det gjør det ikke. #2: Bruk en skikkelig editor. #3: Det å bruke bilder gjør også at det er umulig å copy-paste, det skalerer ikke (størrelse), det respekterer ikke mine fonter og, ikke minst, det er MYE mer data å laste. Det å poste bilder er moronic. Endret 30. august 2013 av Lycantrophe Lenke til kommentar
Defo Skrevet 30. august 2013 Forfatter Del Skrevet 30. august 2013 Takk for tilbakemeldinger Jeg endte opp med å gjøre slik: public class Kursbok2 { String emne = "Matte"; public String visTittel() { return emne; } } Slik jeg har forstått det, så gjør nøkkelordet "private" at en variabel kun kan hentes fram i sin egen klasse. Men putter jeg "private" foran "String emne" ovenfor, så får jeg fortsatt hentet ut variabelen i main klassen min. How come? Lenke til kommentar
jonny Skrevet 30. august 2013 Del Skrevet 30. august 2013 (endret) Les her, tabellen på den siden viser det veldig godt. Slik koden din er over kan du bruke 'kursbok2.emne = "hva-som-helst";' fra main-klassen din, det kan du ikke hvis du legger til "private" foran "String emne" i Kursbok2. Det er svært ofte en dårlig idé å la variabler være mulig å endre på den måten. Det er en god regel å være så streng som mulig, la alt som kan være "private" være det. Metoden "visTittel" returnerer en referanse (tenk på det som en adresse) til det samme String-objektet som referansen "emne" peker på (altså en kopi av emne). Hvis main-klassen nå endrer på objektet som denne referansen peker på, vil selvfølgelig "emne" også gjenspeile disse endringene, siden det er samme referanse. Dette kan imidlertid ikke skje, da String er "immutable" (kan ikke endres etter at objektet er opprettet). Endret 31. august 2013 av jonny Lenke til kommentar
Defo Skrevet 30. august 2013 Forfatter Del Skrevet 30. august 2013 (endret) Les her, tabellen på den siden viser det veldig godt. Slik koden din er over kan du bruke 'kursbok2.emne = "hva-som-helst";' fra main-klassen din, det kan du ikke hvis du legger til "private" foran "String emne" i Kursbok2. Det er svært ofte en dårlig idé å la variabler være mulig å endre på den måten. Det er en god regel å være så streng som mulig, la alt som kan være "private" være det. Ja, det er slik jeg også har forstått det. Men jeg får hentet ut variabelen "emne" i main klassen, selv om jeg skriver private foran. Slik at det med andre ord blir: public class Kursbok2 { private String emne = "Matte"; public String visTittel() { return emne; } } Her skulle det da ikke være mulig å hente ut denne variabelen i main klassen min ettersom den er deklarert som private? Endret 30. august 2013 av Defo Lenke til kommentar
Lycantrophe Skrevet 30. august 2013 Del Skrevet 30. august 2013 Takk for tilbakemeldinger Jeg endte opp med å gjøre slik: public class Kursbok2 { String emne = "Matte"; public String visTittel() { return emne; } } Dersom dette er hele klassen din; hvorfor er ikke emne const (final i java?)? Hvorfor er emne en medlemsvariabel i det hele tatt? Videre får du ikke hentet den ut; du får returnert en kopi. Stor forskjell. Private betyr bare at ingen kan røre medlemmet med object.emne; de må gå via en metode. Det virker kanskje tungvindt, og det med god grunn. Det er første tegn på at du gjør noe galt. Det det også gjør er at du kan håndtere input, for eksempel bare godkjenne enkelte emner. Private gjør altså bare at medlemmet ikke eksponeres ut av objektet. Det er fortsatt 100% tilgjengelig for alt som er en del av klassen. Inkludert deres evne til å returnere en kopi av strengen. 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å