iceLord73 Skrevet 13. februar 2015 Del Skrevet 13. februar 2015 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
iceLord73 Skrevet 13. februar 2015 Del Skrevet 13. februar 2015 (endret) Den er fikset, men nå uten ekstraoppgaven (initial), foreløpig. Noe annet feil er også fikset. Endret 13. februar 2015 av iceLord73 Lenke til kommentar
iceLord73 Skrevet 13. februar 2015 Del Skrevet 13. februar 2015 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
iceLord73 Skrevet 13. februar 2015 Del Skrevet 13. februar 2015 (endret) Komplett. Sjekk algoritmen for å finne oddetall. Den er riktig nå. Dropp package linja hvis du ikke bruker det i IDEen din. Endret 13. februar 2015 av iceLord73 Lenke til kommentar
quantum Skrevet 13. februar 2015 Del Skrevet 13. februar 2015 (endret) 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 13. februar 2015 av quantum Lenke til kommentar
quantum Skrevet 13. februar 2015 Del Skrevet 13. februar 2015 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
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å