Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 5635
Hei!
Er det noen som kan forklare meg hvordan de ville løst oppgaven (bildet). Gjerne også hvorfor, da jeg ikke forstår hvordan man skal tenke for å løse den..

http://bildr.no/thumb/UUc4NEVM.jpeg
Sitat av nilse1 Vis innlegg
Øver til eksamen, så prøver å forstå hvordan man skal tenke/gå frem for å finne ut hvordan riktig utskrift blir. Er som du kanskje forstår ikke en racer i Java ;-)
Vis hele sitatet...
Det er bare en måte å løse slike oppgaver på. Du må rett og slett se for deg hvordan en datamaskin vill ha kjørt koden.

f.eks

Kode

package print;

public class Print
{
        public static void main(String [] args)
        {
                String text = "Hello World!";

                System.out.println(text);
        }
}
Her må gå igjennom koden som en datamaskin ville ha gjort det. Og som du sikkert har lært eller burde ha lært, så leiter datamaskinen etter main() metoden. Så vi starter i dette tilfelle her:

Kode

public static void main(String [] args)
{
    // Her vil datamaskinen starte
I mitt eksempel over så ser man at neste linjer er:

Kode

String text = "Hello World!";
Hva skjer her? Jo vi deklarer 'text' variabelen og tilegner den «verdien» eller «stringen»: «Hello World!». Så hver gang vi bruker 'text' variabelen så vil den referere til «Hello World!», så lenge vi ikke endrer det. Og da må vi huske hva vi har gjort når vi da går over på neste linje.

Kode

System.out.println(text);
Her ser vi at dette er et metodekall til en statisk metode som befinner seg i 'System.out', metoden tar i mot en variabel 'text' og vil printe ut en tekst. Og hva inneholdt variabelen 'text'? Jo strigen «Hello World!». Du må også legge merke til at her brukes println() metoden, som vil si at den printer en ny linje etter at stringen i 'text' er skrevet ut. Så resultatet blir

Kode

Hello World!\n
Eller:

Kode

Hello World!\r\n
Jeg vet ikkje hvordan jeg skal forklare dette på en enklere måte. Alt dette er ikke helt korrekt for hvordan en maskin behandler dataen, blant annet så skjer det hel masse ting før den kommer til selve 'main' metoden, og 'text' er en referanse til et String objekt, som inneholder verdien «Hello World!» ; men dette er ikke noe du treng å tenke på her å nå. Du må først forstå prinsippene før du kan begynne å tenke på hvordan ting henger sammen.
Først bør du studere koden for å se om du klarer å finne noen enkle syntaksfeil eller andre ting som peker seg ut som problemer. Etter du har gjort det vil du kunne svare på spørsmål 1 (Hint: man har lov til å kalle .toString() på alle objekter i Java.). Et annet hint er at det er to oppfølgningsspørsmål som ser ut til å peke på at kompileringen går bra.

Hvis svaret på spørsmål A er at det kompilerer, er man nødt til å vite hva som skjer ved kall på toString() dersom toString ikke er implementert eksplisitt i klassen Bok. Dersom du vet det, vet du også hva svaret på spørsmål 3 er. Standard-metoder er man nødt til å vite på forhånd / kunne slå opp i dokumentasjon. Du kan lese om toString her: her. Hvis du ikke vet det har du ikke kodet nok, så da bør du programmere alle disse oppgavene samtidig som du pugger.
Trådstarter
3 0
Takk for svar
Vil det da bli riktig at utskriften blir: Doppler Erlend Loe 12122323?

Har lest litt om toString() og ser at den også kan returnere navnet på klassen etterfulgt av @ og flere tall. (som det feks står i linken til oracle; getClass().getName() + '@' + Integer.toHexString(hashCode()) ).

Hva er forskjellen når den returnerer String-objekter og det andre alternativet jeg skrev? Og hvordan vet man hva det hexadesimale tallet er? Har feks sett at en output vil kunne bli noe som Ansatt@7bafac30

Takker for svar!
Sist endret av nilse1; 6. juni 2017 kl. 13:02.
Sitat av nilse1 Vis innlegg
Takk for svar
Vil det da bli riktig at utskriften blir: Doppler Erlend Loe 12122323?
Vis hele sitatet...
Så lenge klassen ikke har definert noen toString-metode, så vil den bare arve toString-metoden til Object-klassen, og den printer bare klassenavnet, en krøllalfa, og hashkoden på heksadesimal form.

Sitat av nilse1 Vis innlegg
Har lest litt om toString() og ser at den også kan returnere navnet på klassen etterfulgt av @ og flere tall. (som det feks står i linken til oracle; getClass().getName() + '@' + Integer.toHexString(hashCode()) ).

Hva er forskjellen når den returnerer String-objekter og det andre alternativet jeg skrev? Og hvordan vet man hva det hexadesimale tallet er? Har feks sett at en output vil kunne bli noe som Ansatt@7bafac30
Vis hele sitatet...
String-klassen har sin egen toString-metode (fra CharSequence-grensesnittet) som overrider Object-klassen sin toString-metode. Den gjør at når du printer et String-objekt, så printes selve stringen. Bok-klassen har ikke overridet metoden med sin egen toString-metode, og vil dermed automatisk bruke Object-klassen sin toString-metode, som er på formen du nevner over. Bok@<hexcode>. Du vet ikke hva det heksadesimale tallet vil være. Det vil si, du kan jo regne det ut, men det er jo da altså en hash som regnes ut fra objektet, så den vil fremstå som ganske tilfeldig. Det er i alle fall ikke noe å bry seg om.

PS: Du kan jo bare teste selv. Kjør koden og se selv hva den spytter ut. Det må da være veldig mye lettere og mer effektivt enn å spørre her og vente potensielt flere timer/dager på svar.
Sist endret av Realist1; 6. juni 2017 kl. 13:30.
Sitat av Patrick Vis innlegg
Off topic:
Får litt inntrykket at du er ny innen programmering. Er det skoleoppgave du løser her? Hvis ikke, så anbefaler jeg at du styrer langt unna Java som første språk. Det er ikke det dårligste språket, men det tvinger deg inn i en objekt-orientert tankegang, som er et dårlig konsept i utgangspunktet.
Vis hele sitatet...
Utdyp så gjerne hvorfor du mener det. Er det overbrukt av folk som tror det er en god løsning på alt? Ja. Men dårlig konsept i utgangspunktet er det da vitterlig ikke. Istedenfor å bare bashe et konsept (og språk), kom i det minste med bedre alternativer til paradigmer og språk, gjerne også hva du mener er bedre for denne typen oppgave. Ren syting over språk og paradigmer kan alle bedrive, men å faktisk foreslå bedre løsninger - det ser folk ut til å være lite interessert i.

Det sagt sier trådstarter dette er "hjelp til oppgave" og kommer med en tråd midt i eksamensstria, så at det er snakk om et fag kan må vi nok anta.
Sist endret av Xasma; 6. juni 2017 kl. 22:40.
Trådstarter
3 0
Tusen takk for svar, det ble litt klarere nå

Er det forresten noen som vet hvilen Java - klasse som ikke arver fra noen superklasse av Integer, String og Class?
Sitat av nilse1 Vis innlegg
Er det forresten noen som vet hvilen Java - klasse som ikke arver fra noen superklasse av Integer, String og Class?
Vis hele sitatet...
Har du i det hele tatt prøvd å se i dokumentasjonen?
Integer, String, Class

Jeg liker å hjelpe, og det gjør mange andre her også, men forumet her krever en viss grad av egeninnsats. Hva har du gjort selv for å finne ut av dette?