Just nu i M3-nätverket
Gå till innehåll

Java hjälp


Jasmins

Rekommendera Poster

Hej!

 

Jag har fastnat på två java uppgifter och hoppades nån kan hjälpa mig. Här är uppgifterna:

 

1)Skriv ett program som avgör vilket av tre inmatade namn som kommer först i alfabetsordning och som skriver ut det namnet.

 

2)Skriv en metod som "ritar" en likbent triangel av given höjd och bestående av ett givet tecken. Parametrarna används för att ge tecknet och höjden.

Använd metoden i ett huvudprogram som låter användaren mata in triangelns data.

 

Jag har ingen aning hur andra uppgift lösas men för det första använde jag s1.CompareTo.s2 men programet skriver fel i visa fall så jag verkligen behöver hjälp, provet är nästa vecka.

 

All svar uppskattas. Tack på förhand.

/Jasmin

 

[inlägget ändrat 2009-12-23 00:13:21 av Jasmins]

[inlägget ändrat 2009-12-23 00:13:49 av Jasmins]

[inlägget ändrat 2009-12-23 00:14:16 av Jasmins]

[inlägget ändrat 2009-12-23 00:14:41 av Jasmins]

Länk till kommentar
Dela på andra webbplatser

  • Svars 53
  • Skapad
  • Senaste svar

Du kan inte få hjälp av mig för jag reser bort nu över julen, men chansen att få hjälp ökar om man klistrar in den kod man har och är noga med att tala om var någonstans det blir fel eller vad man fastnar på.

 

Länk till kommentar
Dela på andra webbplatser

första uppgift:

 

public class Uppgift3{
  public static void main (String[] args) {

    String namn1, namn2, namn3;

    System.out.print("Skriv in namn 1: ");
    namn1 = Keyboard.readString();
    System.out.print("Skriv in namn 2: ");
    namn2 = Keyboard.readString();
    System.out.print("Skriv in namn 3: ");
    namn3 = Keyboard.readString();

    if(namn1.compareTo(namn2)<0 && namn1.compareTo(namn3)<0){
  	System.out.print(""+namn1+"\t"+namn2+"\t"+ namn3);
    }
    if(namn2.compareTo(namn1)<0 && namn2.compareTo(namn3)<0){
  	System.out.print(""+namn2+"\t"+namn1+"\t"+namn3);
    }
    if(namn3.compareTo(namn2)<0 && namn3.compareTo(namn1)<0){
  	System.out.print(""+namn3+"\t"+namn2+"\t"+namn1);
    }
  }
}

 

koden ger inte alla utskrifter t ex när jag skriver namn1: b, namn2: c och namn3: a utskriften blir a, c, b !!!???

 

provat olika former men lyckades inte, nån som kan hjälpa mig!

 

/Jasmin

 

Länk till kommentar
Dela på andra webbplatser

Jag förstår inte riktigt din kommentar om "koden ger inte alla utskrifter", men enligt din första uppgift, som ditt kodexempel handlade om, har du redan löst problemet. Frågan krävde förvisso bara lägsta bokstaven, så du kan ju utelämna utskrift av övriga. Eller har jag missat något?

ublic class Uppgift3{
  public static void main (String[] args) {

    String namn1, namn2, namn3;

    System.out.print("Skriv in namn 1: ");
    namn1 = Keyboard.readString();
    System.out.print("Skriv in namn 2: ");
    namn2 = Keyboard.readString();
    System.out.print("Skriv in namn 3: ");
    namn3 = Keyboard.readString();

    if(namn1.compareTo(namn2)<0 && namn1.compareTo(namn3)<0){
  	System.out.print(""+namn1);
    }
    if(namn2.compareTo(namn1)<0 && namn2.compareTo(namn3)<0){
  	System.out.print(""+namn2);
    }
    if(namn3.compareTo(namn2)<0 && namn3.compareTo(namn1)<0){
  	System.out.print(""+namn3);
    }
  }

 

(Detta är gymnasie-data vi pratar om hoppas jag? Om en högskolelektor använder sig av sådana här simplifierade problem så blir jag annars mörkrädd)

 

[inlägget ändrat 2009-12-23 06:47:04 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

aha juste, jag tänkte att alla tre namn borde skrivas i alfabetsordning, dum jag är :)

och ja det är gymnasie uppgift :D men jag har aldrig jobbat med java tidigare så det är tufft för mig. iaf tack så jätte mycket på hjälpet:thumbsup:

 

/Jasmin

 

Länk till kommentar
Dela på andra webbplatser

har även problem med andra uppgiften:

 

Skriv en metod som "ritar" en likbent triangel av given höjd och bestående av ett givet tecken. Parametrarna används för att ge tecknet och höjden.

Exempelvis ger anropet triangel(+, 4) följande figur:

 

Använd metoden i ett huvudprogram som låter användaren mata in triangelns data.

 

här är min kod:

public class Uppgift4{
  public static void main (String[] args) {   	
    System.out.print("Ange höjden: ");
    int höjd = Keyboard.readInt();
    ritaTriangel(4, 1, 1);
    ritaTriangel(3, 3, 1);
    ritaTriangel(2, 5, 1);
    ritaTriangel(1, 7, 1);
  }
  static void ritaTriangel (int start, int bredd, int höjd){
    for (int i=0; i<bredd; i++){
         for (int j=0; j<höjd; j++){
         skrivTecken(' ', start);
         skrivTecken('+', bredd);
         System.out.println("");
    }
        }
   return;
  }

  static void skrivTecken(char tecken, int antal){
    for(int i=0; i<antal; i++){
        System.out.print(tecken);
    }

  }
}

 

mitt problem är att triangeln måste bli större men min kod gör att triangelna höjd ökar. och jag kunde inte hitta mitt eget fel. blir tackam om nån kan hjälpa mig, igen :D

 

/Jasmin

 

[bild bifogad 2009-12-23 13:07:22 av Jasmins]

1177240_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

men jag har aldrig jobbat med java tidigare så det är tufft för mig.

Det var inte en pik mot dig, utan mot frågan i boken som sådan.

När det gäller utbildning inom programmering så skall man aldrig sätta specifika gränser på parametrar som gjorts här. På det sättet hindrar man eleven från att utveckla tankar kring mycket saker som exempelvis komplexitet hos de algoritmer man nyttjar för att lösa problemen. Men detta behöver du inte tänka på i ett sådant tidigt skede. Det var därför jag frågade vilken nivå det hela handlade om.

 

Lycka till med studierna, tack för poängen och God Jul! :thumbsup:

 

[inlägget ändrat 2009-12-23 15:32:40 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Det var inte en pik mot dig, utan mot frågan i boken som sådan

 

det vet jag :) bara berättade lite om mig

 

jag fortfarande har problem med andra uppgiften. hoppades nån kan hjälpa mig:

 

Uppgiften är:

Skriv en metod som "ritar" en likbent triangel av given höjd och bestående av ett givet tecken. Parametrarna används för att ge tecknet och höjden.

Använd metoden i ett huvudprogram som låter användaren mata in triangelns data.

 

public class Uppgift4{
  public static void main (String[] args) {   	
    System.out.print("Ange höjden: ");
    int höjd = Keyboard.readInt();

    ritaTriangel(3, 1, höjd);
    ritaTriangel(2, 3, höjd);
    ritaTriangel(1, 5, höjd);
    ritaTriangel(0, 7, höjd);
  }
  static void ritaTriangel (int start, int bredd, int höjd){
    for ( int i = 0; i <=0; i++ ) {
             for ( int n = 0; n <höjd; n++ ) {
          skrivTecken(' ', start);
          skrivTecken('+', bredd);
          skrivTecken(' ', höjd);
          System.out.println(" ");
    }
    }
    return;
  }

  static void skrivTecken(char tecken, int antal){
    for(int i=0; i<antal; i++){
    System.out.print(tecken);
    }

  }
}

triangeln ritas fel, behöver verkligen hjälp :s

 

[inlägget ändrat 2009-12-28 13:20:47 av Jasmins]

[inlägget ändrat 2009-12-28 13:21:31 av Jasmins]

Länk till kommentar
Dela på andra webbplatser

Vad har du tänkt skulle vara nyttan med den här raden:

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

 

Sedan står det att metoden ritaTriangel ska ha "Parametrarna används för att ge tecknet och höjden. "

 

Länk till kommentar
Dela på andra webbplatser

Fast man brukar väl inte använda int om bokstäver.

 

Då var det algoritmen för ritandet. Du behöver inte ha någon variabel för bredden för den beror ju på höjden. Hur många tecken består alltid första raden av, andra raden och tredje raden osv? Kan du utifrån det komma fram till koden för ritandet?

 

 

Länk till kommentar
Dela på andra webbplatser

tack för att du hjälper mig Cecilia :)

 

har en annan kod men problemet ännu är inte löst :(

 

public class Uppgift{
  public static void main (String[] args) {
    System.out.print("Ange tecken: ");
    char tecken = Keyboard.readChar();
    System.out.print("Ange höjden: ");
    int höjd = Keyboard.readInt();

    ritaTriangel(tecken, höjd);

  }
  static void ritaTriangel (char tecken, int höjd){
          for ( int n = 0; n<höjd; n++ ) {
         skrivTecken(' ', tecken);
         skrivTecken('+', höjd);
         System.out.println(" ");
         }
  return;
  }

  static void skrivTecken(char tecken, int antal){
  	for(int i=0; i<antal; i++){
  	     System.out.print(tecken);
  }

  }
}

 

som jag har förstått

skrivTecken(' ', tecken);

hanterar indraget, i detta fall + är lika med 43 och

static void skrivTecken(char tecken, int antal){
  	for(int i=0; i<antal; i++){
  	     System.out.print(tecken);

matar in samma antal som inmatade höjden

 

mitt problem ligger i de två koder men behöver lite mer tips för kunna knäcka koden :D

blir tacksam för svar

 

/Jasmin

 

 

Länk till kommentar
Dela på andra webbplatser

Okej

    skrivTecken(' ', tecken);

skrivTecken ska ju ha ett antal som andra argument.

 

skrivTecken('+', höjd);

Hmm, det är ju inte + du ska skriva ut nödvändigtvis utan det tecken som programmet har läst in på raderna:

     System.out.print("Ange tecken: ");
    char tecken = Keyboard.readChar();

 

Hur kan du räkna ut hur många mellanrum du behöver innan du skriver det ensamma "tecken" som ska stå på första raden?

 

Kan du beskriva med svenska ord vad rita Triangel ska göra? Försök förklara för mig vad som ska ske.

 

Länk till kommentar
Dela på andra webbplatser

programet ska rita en likbent triangel med en given höjd och en given tecken, dvs. användare ska välja tecknet och höjden. i uppgiften finns ett exempel: triangel med tecknet + och höjden 4 ger följande figur:

 

k2joyx.jpg

 

jag förstår vad du menar och vet att uppgiften är mycket lättare än jag tror men vet inte varför jag inte kan komma på nånting. :s

Tack för hjälpen.

 

/Jasmin

 

[inlägget ändrat 2009-12-30 20:50:45 av Jasmins]

Länk till kommentar
Dela på andra webbplatser

Bra, men kan du förklara hur programmet ska fungera om nu höjden ska vara 5, vad ska programmet rita ut först?

 

Länk till kommentar
Dela på andra webbplatser

jag har ritat bilden för höjden är 5. den är samma bild fast med en extra rad under (sista raden)

altså första bilden hade indrag 3,2,1,0 och den här har 4,3,2,1,0

 

20b0leq.jpg

 

 

 

[inlägget ändrat 2009-12-30 22:34:10 av Jasmins]

Länk till kommentar
Dela på andra webbplatser

Så om höjden är fyra så är indraget 3 och om höjden är 5 så är indraget 4. Om höjden är h vad blir indraget?

 

Länk till kommentar
Dela på andra webbplatser

då höjden är h blir indraget h-1

jag förstår nu vad du påpekar men hur kan jag skriva den i koden. vilka delar i sista koden är rätt och vilka bör ändras!

 

[inlägget ändrat 2009-12-31 00:00:08 av Jasmins]

Länk till kommentar
Dela på andra webbplatser

Du får skriva om innehållet i ritaTriangel helt och hållet, men main och skrivTecken ska du ju kunna behålla.

 

Kan du skriva koden för att skriva ut rätt antal mellanrum följt av rätt tecken på första raden?

 

Länk till kommentar
Dela på andra webbplatser

är detta kod rätt eller jag är ute och cyklar

 

static void ritaTriangel (char tecken, int höjd){
           for (int h = 1; h<=1; h++ ) {
       skrivTecken(' ', höjd-1);
       skrivTecken(tecken, höjd/höjd);
       System.out.println(" ");
           }

 

enda lösning jag kunde tänka på för just nu, hoppas det funkar, sen kan man förbättra den

 

Länk till kommentar
Dela på andra webbplatser

Det där ser ut att skriva ut en rad som består av rätt antal mellanrum följt av t ex ett +tecken. Bra!

 

Vad blir höjd/höjd? Kan du förenkla det?

 

Så hur blir nu koden för nästa rad?

 

Länk till kommentar
Dela på andra webbplatser

menar du 1!

 

tror att nästa koder blir

skrivTecken(' ', höjd-2);
skrivTecken(tecken, 3);
System.out.println(" ");
skrivTecken(' ', höjd-3);
skrivTecken(tecken, 5);
System.out.println(" ");
skrivTecken(' ', höjd-4);
skrivTecken(tecken, 7);
System.out.println(" ");

 

är inte säkert om det är rätt att sätta tal i höjds plats! då höjden inte blir mer än 4!

 

Länk till kommentar
Dela på andra webbplatser

menar du 1!
:thumbsup:

 

Nu verkar du ha kommit på principen. Kan du nu skriva om det med en for-loop som gör ett varv för varje rad?

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...