Java :: Aufgabe #214 :: Lösung #2

3 Lösungen Lösungen öffentlich
#214

Teufelskreis einer selbstbezüglichen Aussage

Anfänger - Java von hollst - 17.12.2018 um 18:46 Uhr
Die folgende Aussage sei gegeben als String:

"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."


Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.

Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,

denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?


Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.

Viel Spaß!

#2
vote_ok
von nOrdan (1160 Punkte) - 20.06.2019 um 01:04 Uhr
Main-Klasse:

Quellcode ausblenden Java-Code


import Methodensammlung.UebersetzerZahlenDeutsch;

import Methodensammlung.Methoden;

/**
 * Aufgabe:
 * 
 * Die folgende Aussage sei gegeben als String: "Dieser Satz hat vierzig Buchstaben sowie einen Punkt."
 * Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.
 * Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch, denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?
 * Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.
 * 
 * @author (nOrdan) 
 * @version (20.06.19)
 */

public class Teufelskreis
{    
    
    UebersetzerZahlenDeutsch u = new UebersetzerZahlenDeutsch();
    
    Methoden m = new Methoden();
    
    public static void main(String [] args)
    {
        Teufelskreis t = new Teufelskreis();
        t.kreis();
    }
    
    private void kreis()
    {
        boolean valid1 = false;
        String satz = "Dieser Satz hat vierzig Buchstaben sowie einen Punkt"; 
        String clear = satz.replaceAll("\\s+","");
        while (valid1 == false)
        {
            String laenge = Integer.toString(clear.length()); 
            satz = "Dieser Satz hat " + u.zehner(laenge.charAt(1),laenge.charAt(0)) + " Buchstaben sowie einen Punkt";
            clear = "DieserSatzhat" +  u.zehner(laenge.charAt(1),laenge.charAt(0)) + "BuchstabensowieeinenPunkt";
            if (clear.length() == m.parseInt(laenge))
            {
                valid1 = true;
            }   
            else
            {
                continue;
            }
        }
        m.informationMessage("Der Satz in welchem die Aussage stimmt ist: " + satz,"Ergebnis");
    }
}



Methoden die ich aus meinem Methodensammlung package benutzt habe:

Quellcode ausblenden Java-Code

 private String einer(char einer,int speziell)
    {
        String x = ""; //Lokale Variable zum Speichern des Ergebnisses
        switch (einer) //Einfache switch-case Anweisung mit der Einerstelle (einer) als Ausdruck zum auswerten
        {
            case '1': 
            if (speziell == 1)
            {
                x = ein + "s"; //x wird wenn der Case eintritt gleich dem deutschen Wort für die Zahl die überprüft wurde gesetzt
            }
            else
            {
                x = ein;
            }
            break;
            case '2':
            x = zwei;
            break;
            case '3':
            x = drei;
            break;
            case '4':
            x = vier;
            break;
            case '5':
            x = fuenf;
            break;
            case '6':
            x = sechs;
            break;
            case '7':
            x = sieben;
            break;
            case '8':
            x = acht;
            break;
            case '9':
            x = neun;
            break;
        }
        return x; //Rückgabe des Ergebnisses der Methode 
    }

private String zehner(char einer, char zehner)
    {
        String ausgabe = ""; //Lokale Variable zum Speichern des Ergebnisses
        ausgabe += einer(einer,0);  //Bestimmen der Einerstelle mithilfe der Methode für einstellige Zahle. Das Ergebnis wird der Ausgabe hinzugefügt in welchem die Zehnerzahl schon steht. 
        if (zehner == '1' && einer == '0') //If und else if für die Behandlung von speziellen Fällen für Zahlen, welche wegen der Rechtschreibung nicht zusammengebaut werden können
        {
            return zehn;
        }
        else if (zehner == '1' && einer == '1')
        {
            return elf;
        }
        else if (zehner == '1' && einer == '2')
        {
            return zwoelf;
        }
        else if (zehner == '2' && einer == '0')
        {
            return zwanzig;
        }
        else if (zehner == '3' && einer == '0')
        {
            return drei + bAnhang;
        }
        else if (zehner == '4' && einer == '0')
        {
            return vier + aAnhang;
        }
        else if (zehner == '5' && einer == '0')
        {
            return fuenf + aAnhang;
        }
        else if (zehner == '6' && einer == '0')
        {
            return sechs + aAnhang;
        }
        else if (zehner == '7' && einer == '0')
        {
            return sieben + aAnhang;
        }
        else if (zehner == '8' && einer == '0')
        {
            return acht + aAnhang;
        }
        else if (zehner == '9' && einer == '0')
        {
            return neun + aAnhang;
        }
        else        
        {
            ausgabe += "und";
            switch(zehner) //Switch Anweisung mit Zehnerstelle (zehner) als Ausdruck
            {
                case '2':
                ausgabe += zwanzig; //Der Ausgabe wird beim Eintreffen des Case das deutsche Wort für die Zehnerzahl hinzugefügt
                break;
                case '3':
                ausgabe += drei + bAnhang;
                break;
                case '4':
                ausgabe += vier + aAnhang;
                break;
                case '5':
                ausgabe += fuenf + aAnhang;
                break;
                case '6':
                ausgabe += sechs + aAnhang;
                break;
                case '7':
                ausgabe += sieben + aAnhang;
                break;
                case '8':
                ausgabe += acht + aAnhang;
                break;
                case '9':
                ausgabe += neun + aAnhang;
                break;
            }             
        }
        return ausgabe; //Rückgabe des Ergebnisses
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben