Gå til innhold

Programmering i Java


Anbefalte innlegg

Videoannonse
Annonse

(1). Det ville vært bedre om du postet koden her med [kode]-klammer (eksempel under). Alternativt så kunne du brukt en tjeneste som hastebin.com (genial tjeneste!) for å dele den med oss.

koden din

(2). Det er (forhåpentligvis) ingen som kommer til å hjelpe deg ved å skrive koden for deg. Som Karl Skapeland poengterer, den eneste måten å lære på er at du forsøker selv. Vi kan selvfølgelig dytte deg i riktig retning, men da må du først vise oss at du har forsøkt, og forklare oss hvordan du har tenkt.

Endret av blured
Lenke til kommentar

Nei. Hvorfor ikke fortelle hvor du står fast? Vi kan dytte deg i riktig retning, ikke gjøre leksene dine. Det kommer det ingenting godt ut av.

//Programmet nedenfor skriver ut på skjermen

4444

4444

4444

4444

//det er ikke iht. oppgaven da utskriften skal være: 4 4 4 4

4 4

4 4

4 4 4 4

 

//antar det skal være en løkke med SkrivSiffer(x)

// der x = 2 - 9

// lese inn verdi av x: showInputDialog ()

// utskrift : showMessageDialog ()

// ser ikke helheten av programmet ?

 

import static java.lang.System.*;

//import static javax.swing.JOptionPane.*;

public class SkrivSiffer {

public static void main(String[] args) {

SkrivSiffer(4);

SkrivSiffer(4);

SkrivSiffer(4);

SkrivSiffer(4);

}

private static void SkrivSiffer(int antall) {

for (int i=1; i<=antall; i++)

out.print("4");

out.println();

}

}

Lenke til kommentar

(1). Det ville vært bedre om du postet koden her med [kode]-klammer (eksempel under). Alternativt så kunne du brukt en tjeneste som hastebin.com (genial tjeneste!) for å dele den med oss.

koden din

(2). Det er (forhåpentligvis) ingen som kommer til å hjelpe deg ved å skrive koden for deg. Som Karl Skapeland poengterer, den eneste måten å lære på er at du forsøker selv. Vi kan selvfølgelig dytte deg i riktig retning, men da må du først vise oss at du har forsøkt, og forklare oss hvordan du har tenkt.

//Programmet nedenfor skriver ut på skjermen

4444

4444

4444

4444

//det er ikke iht. oppgaven da utskriften skal være: 4 4 4 4

4 4

4 4

4 4 4 4

 

//antar det skal være en løkke med SkrivSiffer(x)

// der x = 2 - 9

// lese inn verdi av x: showInputDialog ()

// utskrift : showMessageDialog ()

// ser ikke helheten av programmet ?

 

import static java.lang.System.*;

//import static javax.swing.JOptionPane.*;

public class SkrivSiffer {

public static void main(String[] args) {

SkrivSiffer(4);

SkrivSiffer(4);

SkrivSiffer(4);

SkrivSiffer(4);

}

private static void SkrivSiffer(int antall) {

for (int i=1; i<=antall; i++)

out.print("4");

out.println();

}

}

Lenke til kommentar

 

Nei. Hvorfor ikke fortelle hvor du står fast? Vi kan dytte deg i riktig retning, ikke gjøre leksene dine. Det kommer det ingenting godt ut av.

//Programmet nedenfor skriver ut på skjermen

4444

4444

4444

4444

//det er ikke iht. oppgaven da utskriften skal være: 4 4 4 4

4 4

4 4

4 4 4 4

 

//antar det skal være en løkke med SkrivSiffer(x)

// der x = 2 - 9

// lese inn verdi av x: showInputDialog ()

// utskrift : showMessageDialog ()

// ser ikke helheten av programmet ?

 

import static java.lang.System.*;

//import static javax.swing.JOptionPane.*;

public class SkrivSiffer {

public static void main(String[] args) {

SkrivSiffer(4);

SkrivSiffer(4);

SkrivSiffer(4);

SkrivSiffer(4);

}

private static void SkrivSiffer(int antall) {

for (int i=1; i<=antall; i++)

out.print("4");

out.println();

}

}

 

Problemet så langt er utskriften !

Lenke til kommentar

Hele oppgaven er en ren printeoppgave, så ja ikke så rart at det er det som er problemet...

 

Men hadde lest hva som blir skrevet til deg over, bør være nok til å lede deg videre. Begge gir deg i praksis et hint om to mulig måter å løse problemet på (i programmering finnes alltid flere måter å løse det samme problemet på).

 

(1) fruktsalatsaft: Tips: Dobbel for-løkke med if-tester for å sjekke om du er på en ytterkant.

 

(2) Djn: Du kaller SkrivSiffer fire ganger, og da skriver den selvfølgelig også ut fire like linjer. Hvis du ser på fasiten - hvor mange typer linjer er det der? Når skal du skrive ut hvilken type?

Om du fremdeles ikke forstår, så hadde jeg bare sittet å lekt meg med koden. Hva skjer når du endrer på parameterne (antall) du sender inn i metoden? Hva skjer om du f.eks. sender inn 2, 3, 4, og 5, fremfor å sende inn 4, 4, 4, 4? Hvordan ser printen din ut da? Åpner oppgaven for bruk av flere metoder (som kan printe ulike linjer), eller har du lært if/else slik at du kan klare deg med en metode? Er det noen måte du kan bryte ned boksen på? (hint: hvor mange linjer består den av? Du printer nå ut fire identiske linjer under hverandre.)
Lenke til kommentar
package sifferFigur;


import java.util.*;


public class SifferFigur

{

public static void main(String[] args)

{

Scanner sc = new Scanner(System.in);

boolean fortsette = true;

int heltall = 0;


while(fortsette)

{

System.out.print("Oppgi størrelsen på sifferfiguren: ");

String s = sc.nextLine();

heltall = Integer.parseInt(s);

System.out.print("Oppgi initial på ditt fornavn: ");

String s2 = sc.nextLine();

int midtersteIndeks = -1;


if(erOdde(heltall))

midtersteIndeks = finnMidtersteIndeks(heltall);


for(int i =0 ; i< heltall; i++) // i: 0 1 2 3

{

if(i == 0 || i == heltall-1) // Hvis første eller siste linje skal heltall skrives ut heltall ganger

{

for(int j = 0; j < heltall ; j++) // j: 0 1 2 3

{

System.out.print(heltall);

}

}

else // ellers skal heltall skrives ut 1 gang etterfulgt av n-2 mellomrom etterfulgt av 1 heltall

{

System.out.print(heltall); // Skriver heltallet lengst til venstre på linja


if(midtersteIndeks!= -1 && i == midtersteIndeks) // Hvis true så er vi på midterste linje

{

for(int k =0; k< midtersteIndeks-1; k++)

{

System.out.print(" "); // Skriver ut mellomrom før initial

}

System.out.print(s2); // Skriver ut initial

for(int k =0; k< midtersteIndeks-1; k++)

{

System.out.print(" "); // Skriver ut mellomrom etter initial

}

}

else // Vi er ikke på midterste linje (heller ikke på første eller siste)

{

for(int k =0; k< heltall -2; k++)

{

System.out.print(" "); // Skriver kun ut mellomrom

}

}


System.out.print(heltall); // Skriver heltallet lengst til høyre på linja

}

System.out.println("");

}

System.out.println("");

System.out.print("Ønsker du å fortsette (J/N): ");

if(sc.nextLine().equalsIgnoreCase("N"))

{

System.out.println("Programmet ble avsluttet!");

fortsette = false;

}

}// Avslutter while

sc.close();


} // Avslutter main


public static boolean erOdde(int heltall)

{

for(int i = 1; i< heltall+1; i++) // Hvis i == 0 får vi "divide by zero" exception

{

if(heltall % i != 0)

return true;

}

return false;

}


public static int finnMidtersteIndeks(int heltall)

{

return ( (heltall / 2)); // Utnytter at heltallsdivisjon runder ned til nærmeste hele tall.

}


} // Avslutter klassen

Lenke til kommentar

Du kaller SkrivSiffer fire ganger, og da skriver den selvfølgelig også ut fire like linjer.

Hvis du ser på fasiten - hvor mange typer linjer er det der? Når skal du skrive ut hvilken type?

Forstår ikke hva du mener med type linje ?

Lenke til kommentar

I Eclipse må du gjøre følgende: Opprett et "Java project" (File --> New --> Java project). Deretter må du inni der lage en pakke som heter sifferFigur (File --> New--> Package), nøyaktig skrevet slik. Og så må du inni pakka lage en klasse SifferFigur (File --> New --> Class). Stavet akkurat slik. Inni klassevinduet limer du inn koden over. Så kompilerer/ kjører du koden som en Java applikasjon vha Play-knappen (ikon med hvit trekant på grønn bakgrunn). Run as --> Java application. Etter å ha trykket dette første gang, husker programmet det igjen, og du kan bare trykke knappen neste gang.

Endret av iceLord73
Lenke til kommentar

Firkanten består av to typer linjer. Den ene med fire 4-tall. Den andre med 4 + (mellomrom/tab) + 4. Da kan du for å løse oppgaven på en svært enkel måte lage to metoder. I main blir da dette:

linjetype1()
linjetype2()
linjetype2()
linjetype1()

 

Edit: Er ikke måten å løse det på om oppgaveteksten postet i den andre tråden stemmer.

Endret av blured
Lenke til kommentar

Har brukt Eclipse men gikk over til Sublime Text 2 da den er enklere å bruke synes jeg.

Forsøker med Eclipse i morgen.

 

NB! Som du / dere forstår er jeg lite bevandret/dårlig i Java kode. Programmet er en oblig oppgave som må

leveres innen midnatt kl.2400 natt til lørdag.

Lenke til kommentar

I Eclipse må du gjøre følgende: Opprett et "Java project" (File --> New --> Java project). Deretter må du inni der lage en pakke som heter sifferFigur (File --> New--> Package), nøyaktig skrevet slik. Og så må du inni pakka lage en klasse SifferFigur (File --> New --> Class). Stavet akkurat slik. Inni klassevinduet limer du inn koden over. Så kompilerer/ kjører du koden som en Java applikasjon vha Play-knappen (ikon med hvit trekant på grønn bakgrunn). Run as --> Java application. Etter å ha trykket dette første gang, husker programmet det igjen, og du kan bare trykke knappen neste gang.

Takk for det, forsøker det i morgen.

Eclipse er ett godt verktøy men har ikke hatt tid til å utforske/bruke det.

Jobber på dagtid og forsøker å lære Java på ettermiddag/kveldstid.

Lenke til kommentar

Hvilket nivå er det du studerer på? VGS/IKT? Forstudie til noe programmering? Nettstudie?

 

Dette er såpass enkle oppgaver at du kunne antakelig jobbet deg igjennom kapittel 1 i en bok som "Building Java Programs" ila morgendagen/kvelden (kan sikkert sende deg en pdf av kap1 der om du ønsker det), og etter det ville du klart å løse alle oppgavene enkelt. Youtube har også en rekke serier med tutorials som er bra for nybegynnere.

 

Det er også viktig å bruke et skikkelig program for å skrive kode, svært omstendelig å bruke Sublime Text. Eclipse (som du nevner) eller IntelliJ er to gode programmer for Java. Sistnevnte regnes av mange som bedre, men den har svært mange funksjoner som hjelper deg å autofullføre setninger. Så om du skal ha en eventuell skriftligeksamen i Java, så kan det i starten være greit å ikke ha fått alt for mye hjelp av programmet til å autofullføre setninger for deg.

 

Debugging er også noe du burde lære deg (her er IntelliJ fantastisk). Det er en funksjon der du bryter ned koden din. Veldig praktisk for å oppdage feil (for eksempel i for-løkker nå i starten), og for å få en generell forståelse av hvordan koden funker/er bygget opp.

Endret av blured
Lenke til kommentar

Noen tips:

1. Når du lagrer filen, så må den hete nøyaktig det samme som klassen (SifferFigur.java)

2. Du kan du sikkert slette linjen øverst som begynner med "package ......" (brukes ikke i INF100)

3. Hold deg til DrJava eller Sublime til du begynner å få mange filer i prosjektene. Eclipse lager noen problemer helt på egen hånd.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...