3 Java Methoden

underpein

Mitglied
Hallo ...
Ich hab da ein problem mit einer Aufgabe.
Sitze schon seit einigen Tagen dran und komm einfach nicht weiter.
Da meine Versuche zu fehlerhaft sind und schwer nachzuvollziehen poste ich mal die Aufgabe.

1.)Wert des i-ten Bits
Parameter: Ein short-Parameter flags, ein byte-Parameter k
Rückgabe: Wert des k-ten Bits von flags (falls 0=<k=<15, das 0. Bit steht ganz rechts.)
-1 (falls k<0 oder k >15)
2.)Wert des nächsten Buchstabens
Parameter: Ein char-parameter buchstabe
Rückgabe: Der nächste Buchstabe im Alphabet (dabei vom Ende des Alphabets Rückkehr an den Anfang,
also B für A , C für B , .... , Z für Y und A für Z)

3.)Konkatenation
Parameter: Zwei String-Parameter s1 und s2
Rückgabe: Der String der sich ergibt wenn man s1 und s2 aneinanderhängt und ein leerzeichen dazwischensetzt.

Betten sie im Hauptprogramm die aufrufe der methoden in ein Auswahlmenu ein: der benutzer soll hier eine der drei möglichkeiten auswählen. Er soll dann werte eingeben die anschließend beim Mtheodenaufruf als aktuelle parameter benutzt werden.Solange bei 2.) ein Zeichen eingeben wird das kein Großbuchstabe ist soll die Eingabe wiederholt werden.Das Hauptprogramm soll dann die gewählte methode aufrufen und nach ihrer Rückkehr das Ergebnis auf den Bildschirm ausgeben. Innerhalb der Methoden sollen also keine Tastatureingaben oder Bilschirmausgaben erfolgen. Der vorgang soll so lange wiederholt werden bis der Benutzer eine Beendigung wünscht.


Wäre sehr dankbar wenn ich Zahlreiche Hilfen bekomme da ich im verzug bin.

Mit freundlichen Grüßen
ME
 

underpein

Mitglied
ne die ansätze sind da schon falsch bei mir....
mir würde auch hier so ein denk anstoß sehr weiter helfen wie ichüberhaupt erstmal beginnen soll...
Ich frag mich auch wie anspruchsvoll ist die aufgabe weil ich werde aus den parameter&rückgabe nicht wirklich schlau draus...
also da fehlt vorne und hinten an wissen und übung
 

tagedieb

Top Contributor
Deine Hausaufgaben machen wir hier eigentlich nicht, also streng mal deinen Grips an.

1. Definier die Klassenmethoden
sicher brauchst du eine main(..)-Methode und die andern Methoden sind ja in der Aufgabe definiert


underpein hat gesagt.:
1.)Wert des i-ten Bits
Parameter: Ein short-Parameter flags, ein byte-Parameter k
Rückgabe: Wert des k-ten Bits von flags (falls 0=<k=<15, das 0. Bit steht ganz rechts.)
-1 (falls k<0 oder k >15)

Name: kannst du frei waehlen. z.B. getBitAt
Parameter1: short flag
Parameter2: byte k
Rueckgabe: moegliche Werte sind 0, 1 oder -1. Diese Werte lassen sich in einem byte oder int speichern

Daraus kannst du ohne Probleme die Methoden-Signatur erstellen

Java:
byte getBitAt(short flag, byte k) {
  // dein Code
  //   -  Wertebereich von k pruefen
  //   -  Wenn gueltiger Wert errechne das entsprechende Bit - Stichwort: Bit-shifting, Alternativ: Integer.toBinaryString(..)
  return result;
}
}

Bei den andern beiden Methoden kannst du genau gleich vorgehen.
Ich denke mal Methode 1 ist wohl am anspruchvollsten, die andern beiden sollten kein wirkliches Problem darstellen


weil ich werde aus den parameter&rückgabe nicht wirklich schlau draus...

Eventuell nochmal das ensprechende Kapitel lesen und ein paar einfachere Uebungen machen..
 

underpein

Mitglied
ok danke erstmal für diesen schritt ich schau dann mal wie weit ich komme...
ich erwarte auch nicht dass sie irgendjemand für mich löst das ist ja nicht der sinn meiner übung ...
 

henpara

Bekanntes Mitglied
weil mir gerade langweilig ist, löse ich mal
3.)Konkatenation
Parameter: Zwei String-Parameter s1 und s2
Rückgabe: Der String der sich ergibt wenn man s1 und s2 aneinanderhängt und ein leerzeichen dazwischensetzt.

ohne Anspruch auf Richtigkeit ;):

Java:
private String Konkatenation(String s1, String s2) {
return s1 + " " + s2
}
 

underpein

Mitglied
hier ist mein versuch zu
2.
Java:
public class A {

  /**
   * @param args
   */
  public static void main(String[] args) {
    
    System.out.println(naechsterBuchstabe('Z'));

  }

  public static String naechsterBuchstabe (char buchstabe)
  { 
    int wert = buchstabe;
    if (buchstabe == 'A')
      return String.valueOf('Z');
    else
    {   
      wert--;
      String vorherigerBuchstabe = String.valueOf((char)wert);
      return  vorherigerBuchstabe;
    }
    
  }
}
 
Zuletzt bearbeitet:

underpein

Mitglied
so ich hab jetzt mal was versucht mit allen 3 methoden

Java:
import java.io.*;

class Methoden_in_Java{

        public int getBit(short flags, byte k){
        if(k < 0 || k > 15)
        {
          return -1;
        }
        short mask = 1 << k;
        if((flags & mask) == mask)
        {
          return 1;
        }
        else
        {
          return 0;
        }
        
        public static void main(String[] args){

        System.out.println(naechsterBuchstabe('Z'));

        }

        public static String naechsterBuchstabe (char buchstabe)
        {
          int wert = buchstabe;
          if (buchstabe == 'A')
            return String.valueOf('Z');
          else
          {
            wert--;
            String vorherigerBuchstabe = String.valueOf((char)wert);
            return  vorherigerBuchstabe;
          }

        }
        
        private String Konkatenation(String s1, String s2){
        return s1 + " " + s2
        }
        
}
 

underpein

Mitglied
so dank hilfe ist das Programm fertig

Java:
import java.io.*;

class Auswahlmenu {
      public static int itesBit(short flags, byte k){
      if(k < 0 || k > 15) return -1;

      int erg = flags >> k;
      erg = erg & 1;
      return erg;

      }
      public static char naechsterBuchstabe(char buchstabe){
      buchstabe = (char) (buchstabe + 2);

      if(buchstabe == '[') buchstabe = 'A';
      if(buchstabe == 92) buchstabe = 'B';

      return buchstabe;

      }
      public static String Konkatenation(String s1, String s2){
      return s1 + " " + s2;

      }


  public static void main(String args[]) throws IOException{
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    int eingabe;
    do{
        System.out.println("nnnhauptmenü");
        System.out.println("1) wert des i-ten bits");
        System.out.println("2) bit auslesen");
        System.out.println("3) strings verketten");
        System.out.println("4) ende");
        System.out.println("bitte wählen");

        eingabe = Integer.parseInt(in.readLine());

        switch(eingabe){
              case 1:
                  System.out.println("bitte zahl eingeben");
                  short flags = Short.parseShort(in.readLine());
                  System.out.println("welches bit auslesen?");
                  byte k = Byte.parseByte(in.readLine());
                  int ergebnis = itesBit(flags, k);
                  if(ergebnis == -1)
                        System.out.println("k muss zwischen 0 und 15 liegen!");
                  else
                        System.out.println("das " + k + ". bit im bitmuster der zahl " + flags + " ist " + ergebnis);
                  break;
              case 2:
                  char ein;
                  do{
                        System.out.println("bitte grossbuchstaben eingeben");
                        ein = in.readLine().charAt(0);
                        if(ein < 'A' || ein > 'Z') System.out.println("eingabe war kein grossbuchstabe!");
                  }while(ein < 'A' || ein > 'Z');
                  int neu = naechsterBuchstabe(ein);
                  System.out.println("zwei buchstaben nach " + eingabe + " liegt ein " + neu);
                  break;
                case 3:
                  System.out.println("string1 eingeben");
                  String s1 = in.readLine();
                  System.out.println("string2 eingeben");
                  String s2 = in.readLine();
                  String Ergebnis = Konkatenation(s1, s2);
                  System.out.println("s1=\"" + s1 + "\" --- s2=\"" + s2 + "\" --- ergebnis=\"" + Ergebnis + "\"");
                  break;
              case 4:
                  break;
              default:
                  System.out.println("falsche eingabe!");
        }
    }while(eingabe != 4);
  }
}

Kann als erledigt markiert werden.
Danke an alle die geholfen haben
 

Neue Themen


Oben