Programmieren – die neusten Beiträge

Java-Code? Array?

Wie wird das Array verwendet? Was befindet sich in dem Array? kann jemand mir den Code und die Methode dunkler erklären?

* SWBild ist eine Klasse, die Graustufenbilder repraesentiert und
 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer
 * die Grauabstufungen.
 * 
 * Beispielmethode 'dunkler': Ein geladenes Bild kann um
 * ein gegebenes 'delta' abgedunkelt werden.
class SWBild
{


    // die Bilddaten dieses Bildes
    private short[][] _bilddaten;


    // die Breite dieses Bildes
    private int _breite;


    // die Hoehe dieses Bildes
    private int _hoehe;


    // Leinwand zur Anzeige
    private Leinwand _leinwand;


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Benutzer kann interaktiv mit
     * Hilfe eines Dateidialogs die zu ladende Datei auswaehlen.
     */
    public SWBild()
    {
        _bilddaten = BildEinleser.liesBilddaten();
        if (_bilddaten != null)
        {
            aktualisiereBildgroesse(_bilddaten);
            erzeugeLeinwand();
        }
    }


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Dateiname kann als absoluter
     * oder relativer Pfad uebergeben werden.
     * 
     * @param bilddateiName
     *            der Name der Bilddatei
     */
    public SWBild(String bilddateiName)
    {
        _bilddaten = BildEinleser.liesBilddaten(bilddateiName);
        aktualisiereBildgroesse(_bilddaten);
        erzeugeLeinwand();
    }


    /**
     * Dieses Bild um einen Wert abdunkeln. 
     * 
     * @param delta
     *            Wert der Abdunkelung. Es wird mit dem Betrag von delta gerechnet, 
     *            deshalb darf der Parameter sowohl positiv als auch negativ sein.  
     */
    public void dunkler(int delta)
    {
        if (delta < 0)
        {
            delta = -delta;
        }


        /**
         * Durch alle Bytes des Bildes gehen und jeden Wert dekrementieren
         */
        for (int y = 0; y < _hoehe; y++)
        {
            for (int x = 0; x < _breite; x++)
            {
                if ((_bilddaten[y][x] - delta) > 0) // Wert darf 0 nicht unterschreiten
                {
                    _bilddaten[y][x] = (short) (_bilddaten[y][x] - delta);
                }
                else
                {
                    _bilddaten[y][x] = 0;
                }
            }
        }
        // Neuzeichnen der Bildleinwand, basierend auf den Werten in _bilddaten:
        zeichneBild();
    }




Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik

Wie starte ich die While Schleife in Python neu?

Hallo!

Ich programmiere aktuell einen "Vokabelabfrager". Dazu hätte ich eine Frage. Und zwar arbeite ich grafisch mit Tkinter. Doch ich bin gerade in einer While Schleife, in der alles funktioniert, aber dann will die While Schleife sich nicht mehr neustarten, denn sie hat schon erledigt was sie machen sollte, und will nicht weiter abfragen, weil sie dies schon gemacht hat.

Das ist ein Ausschit meines Codes:

weiter = False


def Prüfungs_Start():
    global weiter
    weiter = True
    while weiter == True:
        weiter = False
        Prüfungs_Start_Fenster = Tk()
        Prüfungs_Start_Fenster.title("Prüfung")
        Prüfungs_Start_Fenster.geometry("400x500")
        #Random Zeile finden
        Datei = open("Vokabeln.txt", "a")
        Datei = open("Vokabeln.txt", "r")
        Datei_Anzahl_Zeilen = 0
        for Zeile in Datei:
            Datei_Anzahl_Zeilen += 1
        Datei.seek(0)
        Randomzeile = randint(1, Datei_Anzahl_Zeilen)
        Zähler = 1
        for Zeilen_Inhalt in Datei:
            if Zähler == Randomzeile:
                Random_Zeilen_Inhalt = Zeilen_Inhalt
            Zähler += 1
        #2 Vokabeln, die in der ausgewählten Zeile stehen, in 2 Variablen speichern
        Ort = Random_Zeilen_Inhalt.find("'")
        TestVokabel1 = Random_Zeilen_Inhalt[0:Ort]
        TestVokabel2 = Random_Zeilen_Inhalt[Ort+1:-1]
        Label(Prüfungs_Start_Fenster, text = f"Ausgangs-Vokabel: {TestVokabel1}", font = "Arial_Black 20").place(x = 10, y = 10)
        Eingegebenes_Ergebnis = Entry(Prüfungs_Start_Fenster)
        Eingegebenes_Ergebnis.place(x = 10, y = 50)
        def Prüfung():
            if Eingegebenes_Ergebnis.get() == TestVokabel2:
                Label(Prüfungs_Start_Fenster, text = "Richtig!         ", font = "Arial 21", fg = "green").place(x = 10, y = 180)
            else:
                Label(Prüfungs_Start_Fenster, text = "Leider falsch", font = "Arial 21", fg = "red").place(x = 10, y = 180)


        Button(Prüfungs_Start_Fenster, text = "Fertig", command = Prüfung).place(x = 10, y = 100)
        def Weiter():
            global weiter
            weiter = True
            Prüfungs_Start_Fenster.destroy()
        Button(Prüfungs_Start_Fenster, text = "Weiter", command = Weiter).place(x = 10, y = 130)

Nun habe ich hinten diesen "Weiter" Button, der die Variable "weiter" wieder auf einen anderen Wert weisen soll, um die While Schleife wieder laufen zu lassen. Das möchte sie aber wohl nicht, denn sie hat ja schon abgefragt und da hat es nicht gestimmt.

Wenn ihr wisst, wie ich es schaffen kann, dass die While Schleife neu abfragt, bitte hilft mir,

euer Alex

programmieren, Programmiersprache, Python, Tkinter

Java - wievielter Tag im Jahr berechnen?

Hallo, ich habe folgende Aufgabenstellung: Schreiben Sie ein Programm, das für ein gegebenes Datum bestehend aus Tag, Monat und Jahr ausrechnet, um den wievielten Tag im Jahr es sich handelt. (Achtung: Schaltjahrproblematik nicht vergessen.)

Mein Code:

import java.util.Scanner;
public class TagImJahr
{
    public static void main(String[] args)
    {
        Scanner read = new Scanner(System.in);

        int tag, monat, jahr, anzahlTage, wievielterTag, monatTag;
        boolean Schaltjahr;

        System.out.println("Geben Sie einen Tag ein: ");
        tag = read.nextInt();

        System.out.println("Geben Sie einen Monat ein: ");
        monat = read.nextInt();

        System.out.println("Geben Sie ein Jahr ein: ");
        jahr = read.nextInt();

        Schaltjahr = (jahr%4 == 0) && (jahr%100 != 0) || (jahr%400 == 0);

        if(Schaltjahr && monat == 2)
        {
            anzahlTage = 366;                                       //Anzahl der Tage im Jahr
            monatTag = 29;                                          //Tage im Monat
        }
        else
        {
            anzahlTage = 365;                                       //Anzahl der Tage im Jahr
            monatTag = 31;                                          //Tage im Monat
        }

        int datum = anzahlTage + (monat * monatTag - monatTag) + tag;

        wievielterTag = datum - anzahlTage;

        System.out.println("Der " + tag + "." + monat + "." + jahr + " ist der " + wievielterTag + ". Tag im Jahr");
    }
}

Jedoch fehlt bei mir irgendwas, evtl. das manche Monate 31 und 30 Tage haben, wie baue ich dies jedoch am Besten ein? Bei ein paar Datumseingaben kommt das richtige Ergebnis, bei anderen weichen die Tage um paar Zahlen ab.

Kann mir bitte jemand weiterhelfen?

Studium, programmieren, Java

java_Code?

Kann einer diese beide Methode erklären? wie läuft switch-case hier?

 /**
     * Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
     *
     * @param zeile  vertikale Position (0-2)
     * @param spalte horizontale Position (0-2)
     * @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public int gibBesitzer(int zeile, int spalte) {
        int besitzer = 0;
        char zeichen = feld.charAt(gibPosition(zeile, spalte));
        switch (zeichen){
            case '0':
                besitzer = 0;
                break;
            case '1':
                besitzer = 1;
                break;
            case '2':
                besitzer = 2;
                break;
        }
        return besitzer;
    }


    /**
     * Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public void besetzePosition(int zeile, int spalte, int spieler) {
        int position = gibPosition(zeile, spalte);
        feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
    }
Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik, Wirtschaftsmathematik

Schematron Regeln programmieren?

Hallo liebe Community,

ich bin ein absoluter Newbie in Sachen Schematron und XML/XSLT Programmierung und bräuchte einen Rat. Ich habe eine Liste an Aufgaben erhalten und soll diese in Schematron umsetzen. Hier mal die Aufgaben:

Regel 1: Der Dateiname in related-atricle muss immer mit der Endung ".pdf" enden.

Regel 2: Die Elemente volume und issue dürfen ausschließlich Zahlen enthalten.

Regel 3: Die letzte Seite muss größer als die erste Seite sein. < und >

Fangen wir mit Regel 2 an. Hierfür habe ich folgenden Code geschrieben:

 <pattern id="volume">
    <rule context="volume">
      <assert test="matches(volume, '^[0-9]$')"> Das Element "volume" darf ausschließlich
        Zahlen enthalten. </assert>
    </rule>
  </pattern>

  <pattern id="issue">
    <rule context="issue">
      <assert test="matches(issue, '^[0-9]$')"> Das Element "issue" darf ausschließlich Zahlen
        enthalten. </assert>
    </rule>
  </pattern>

Die XML-Datei spuckt mir hier aus meine "Nachricht" aus, obwohl die Elemente Issue und Volume beide bereits nur Zahlen enthalten. Was ist falsch?

Regel 3: Ich dachte das wäre relativ einfach und habe folgenden Code geschrieben

 <pattern id="pages">
    <rule context="fpage">
      <assert test=". &lt; lpage" id="lower-than-lpage"> Die letzte Seite muss größer als die
        erste Seite sein. </assert>
      <assert test="fpage &gt; ." id="greater-than-fpage"> Die letzte Seite muss größer als
        die erste Seite sein. </assert>
    </rule>
  </pattern>  

Auch hier zeigt es mir meine Nachricht in der XML an, obwohl die Bedingung eigentlich stimmt. Habt ihr dazu Ideen?

Nun zur letzten Regel (1). Ich habe viel rumprobiert, bei allen Regeln, aber nichts scheint zu funktionieren. "contains" und "ends-with" haben schonmal nicht funktioniert.. Ich bin tatsächlich etwas verzweifelt, weshalb ich mich an euch wende und hoffe, dass ihr mir helfen könnt. Ich habe so viel zu den Themen Schematron, XPath, XML, XSLT gelesen und muss leider sagen, dass ich nur die Basics verstehe aber nicht gut in der Materie bin. Ich wäre super dankbar, wenn mir jemand bei den Codes helfen könnte. Zumindest für Tipps wäre ich sehr dankbar, aber auf Webseiten kann ich einfach nicht herauslesen WAS ich genau tun muss.

Falls jemand sich wundert woher ich diese Aufgaben habe: Ich studiere und bin im letzten Semester. Mein Wahlpflichtfach ist Electronic Publishing und wir haben Externe Mitarbeiter bekommen, die uns über die oben genannten Themen unterrichten sollen. Die Themen habe ich alle in einem Praktikum bereits behandelt (daher meine Wahl des Moduls) aber nicht in der Tiefe, die nötig wäre. Leider haben die beiden Externen keine Ahnung wie man unterrichtet und leisten nur Hilfestellung in Form von Links. Daher seid ihr meine Letzte Hoffnung.

Ich danke euch!!

VG Hanna

programmieren, Rules, Programmiersprache, XML, Schema

JAVA Arraylist Berechnen mit int und double und Abspeichern von Zwischenwerten?

Hallo Zusammen

Ich muss in einer Aufgabe int und Double Werte miteinander multiplizieren, siehe im Code bei TODO.

import java.util.ArrayList;

public class Einkauf {
	
	private ArrayList<Produkt> produkte = new ArrayList<Produkt>();

	public void addEinkauf(double preis, 
	                        int faktor, 
	                        int menge, 
	                        String name) {
		produkte.add(new Produkt(preis, faktor, menge, name));
	}
	
	public double getPunkte() {
		
// TODO: Punkte des Einkaufs berechnen und zurückgeben
    double punkte;  // sollte richtig sein 
    for (Produkt p : produkte){
        punkte = (preis*menge*faktor); // hier ist ein Fehler 
        produkte.save(punkte);
        return punkte;
    }
	}
}

Es sollen die Treuepunkte wie folgt berechnet werden: Pro CHF Umsatz gibt es einen Punkt. Rappenbeträge werden berücksichtigt: Kostet ein Produkt CHF 3.20, ergibt dies 3.2 Punkte. Zusätzlich kann bei jedem Produkt ein Faktor angegeben werden. Damit kann der Grossverteiler für bestimmte Produkte mehr Punkte ausschütten. Wenn beispielsweise ein Produkt für CHF 3.20 einen Faktor von 10 hat, gibt es für dieses Produkt 32 Punkte.

Für den oben gezeigten Einkauf beträgt das Punkte-Total 207.15.

Sprich, bei jedem Einkauf soll der zwischenwert gespeichert werden.

programmieren, Java, Array, Programmiersprache, Arraylist

Meistgelesene Beiträge zum Thema Programmieren