Gå til innhold

Programmering i Java


Anbefalte innlegg

package sifferFigur;


import java.util.Scanner;


public class SifferFigur2

{

static int heltall = -1;

static String initial = "";


public static void print(String noe)

{

System.out.print(noe);

}


public static void printStringEtHeltallGanger(String s, int heltall)

{

for(int i =0; i< heltall; i++)

{

print(s);

}

}


public static void forsteEllerSisteLinje(int heltall)

{

printStringEtHeltallGanger("" + heltall, heltall);

System.out.println();

}


public static void andreLinjer(int heltall)

{

int antallMidtreLinjer = heltall -2; // -2 pga første og siste linje er unntatt i antallet

int antallBlankeTegn = heltall-2; // -2 pga første og siste tegn på linja er unntatt

for(int i =0; i< antallMidtreLinjer;i++)

{ // 1 kjøring gir 1 midtre linje

print("" + heltall); // Skriver ut første tegn på linjen, som er et heltall.

printStringEtHeltallGanger(" ", antallBlankeTegn);

print("" + heltall); // Skriver ut siste tegn på linjen, som er et heltall.

print("\n");

}

}


public static void run()

{

Scanner sc = new Scanner(System.in);

boolean fortsette = true;

while(fortsette)

{

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

heltall = sc.nextInt();

sc.nextLine(); // Leser carriage return som ble trykket fra innlesing av int ovenfor

lagFigur();


print("Fortsette? (J/N): ");

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

{

print("Programn avsluttet!\n");

fortsette = false;

}

}

sc.close();

}


public static void lagFigur()

{

print("\n");

forsteEllerSisteLinje(heltall);

andreLinjer(heltall);

if(heltall != 1) // Spesialtilfelle

{

forsteEllerSisteLinje(heltall);

}

print("\n");

}


public static void main(String[] args)

{

run();

}

}

Lenke til kommentar
Videoannonse
Annonse
package sifferFigur;


import java.util.Scanner;


public class SifferFigur3

{

static int heltall = 0;

static String initial = "";


public static void print(String noe)

{

System.out.print(noe);

}


public static void printStringEtHeltallGanger(String s, int heltall)

{

for(int i =0; i< heltall; i++)

{

print(s);

}

}


public static void forsteEllerSisteLinje(int heltall)

{

printStringEtHeltallGanger("" + heltall, heltall);

System.out.println();

}


public static void andreLinjer(int heltall, int antallLinjer)

{

// int antallMidtreLinjer = (heltall -2); // -2 pga første og siste linje er unntatt i antallet.

int antallBlankeTegn = heltall -2; // -2 pga første og siste tegn på linja er unntatt


for(int i =0; i< antallLinjer;i++)

{ // 1 kjøring gir 1 midtre linje

print("" + heltall); // Skriver ut første tegn på linjen, som er et heltall.

printStringEtHeltallGanger(" ", antallBlankeTegn);

print("" + heltall); // Skriver ut siste tegn på linjen, som er et heltall.

print("\n");

}

}


public static void midtreLinjeMedInitial()

{

int antallBlankeTegnFørInitial = (heltall/2) -1;

int antallBlankeTegnEtterInitial = antallBlankeTegnFørInitial; // pga figuren er symmetrisk

print("" + heltall); // Skriver ut første tegn på linjen, som er et heltall.

printStringEtHeltallGanger(" ", antallBlankeTegnFørInitial);

print(initial);

printStringEtHeltallGanger(" ", antallBlankeTegnEtterInitial);

print("" + heltall); // Skriver ut siste tegn på linjen, som er et heltall.

print("\n");

}


public static void run()

{

Scanner sc = new Scanner(System.in);

boolean fortsette = true;

while(fortsette)

{

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

heltall = sc.nextInt();

sc.nextLine(); // Leser carriage return som ble trykket fra innlesing av int ovenfor

if(erOdde())

{

print("Oppgi initial: ");

initial = sc.nextLine(); // Leser initial

}

lagFigur();


print("Fortsette? (J/N): ");

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

{

print("Programn avsluttet!\n");

fortsette = false;

}

}

sc.close();

}


public static void lagFigur()

{

print("\n");

forsteEllerSisteLinje(heltall);

if(erOdde())

{

andreLinjer(heltall, heltall/2 -1);

midtreLinjeMedInitial();

andreLinjer(heltall, heltall/2 -1);

}

else

{

andreLinjer(heltall, heltall-2);

}


if(heltall != 1) // Spesialtilfelle, hvis 1 skal du bare skrive ut heltallet 1 gang.

{

forsteEllerSisteLinje(heltall);

}

print("\n");

}


public static boolean erOdde()

{

if(heltall % 2 != 0)

{

return true;

}

return false;

}


public static void main(String[] args)

{

run();

}

}

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 ?

 

 

Han mener om det er en topp- eller bunn-linje hvor det skal skrives siffer hele veien, eller en vanlig linje (alle andre enn første og siste), hvor det bare skal skrives et siffer på første og siste posisjon.

Endret av quantum
Lenke til kommentar

 

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.

 

 

Sublime har vel ikke støtte for bygging og kjøring? Eller debugging? Det er ihvertfall grunnleggende ting du vil ha. Veldig godt mulig du finner IntelliJ mer intuitiv enn Eclipse. BlueJ er en superenkelt Java-IDE uten noen form for forvirrende features, kan også prøves, men du vil nok raskt vokse ifra.

 

Debugging er som blured skriver utrolig oppklarende, og med støtte for bygging og kjøring slipper du rare feil av typen "Error: Could not find or load main class SifferFigur" som er helt unødvendig å måtte hanskes med.

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...