Java – die neusten Beiträge

Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? (Java)?

Hey ich muss folgendes Zustandsdiagramm umsetzen:

Folgenden Code habe ich bereits für die Wahl des Getränks geschrieben:

import java.util.Scanner;
public class Getraenkeautomat
{
public static void main(String[] args)
{
boolean automatBereit = true;
int Apfelschorle = 01;
int Cola = 11;
int Spezi = 21;
int Wasser = 31;
int gewaehltesGetraenk;
String Getraenk;

Scanner s = new Scanner(System.in);
System.out.println("BESCHREIBUNG:");
System.out.println("Zuerst Getraenkwaehlen:");
System.out.println("Apfelschorle = 01; Cola = 11; Spezi = 21; Wasser = 31");
System.out.println("Dann entsprechenden Betrag mit folgenden Muenzen bezahlen:");
System.out.println("1 = 1€; 0.5 = 50ct; 0.2 = 20ct");
Getraenk = s.next();
gewaehltesGetraenk = Integer.parseInt(Getraenk);
if (gewaehltesGetraenk == Apfelschorle){
System.out.println("gewaehltes Getraenk: Apfelschorle");
System.out.println("Bitte zahlen sie 1.50€");
}
else{
if(gewaehltesGetraenk == Cola){
System.out.println("gewaehltes Getraenk: Cola");
System.out.println("Bitte zahlen sie 2.00€");
}
else{
if(gewaehltesGetraenk == Spezi){
System.out.println("gewaehltes Getraenk: Spezi");
System.out.println("Bitte zahlen sie 1.70€");
}
else{
if(gewaehltesGetraenk == Wasser){
System.out.println("gewaehltes Getraenk: Wasser");
System.out.println("Bitte zahlen sie 1.00€");
}
}
}
}
}
}

Nur habe ich das Problem, dass ich keine Ahnung habe wie ich am besten die Münzeingabe umsetzen soll. Wie ihr evtl schon dem Code entnehmen konntet kann der Anwendern 1Euro, 50ct und 20 ct Münzen einwerfen. Wenn zuviel eingeworfen wird soll entsprechend das Getränk mit Rückgeld ausgegeben werden, wenn zu wenig eingeworfen wird soll der noch zu bezahlende betrag ausgegeben werden. Ich habe es mit einer Do while schleife probiert bin jedoch auf kein schlüssiges ergebnis gekommen weshalb ich euch diese erspare. Könntet ihr mir dazu einen Ansatz bzw Lösungsvorschlag sagen wie ich den Münzeinwurf umsetzen soll?

Bild zum Beitrag
Computer, programmieren, Java, Informatik

Minecraft Server lässt sich nicht starten?

Hallo erstmal,

ab und zu setze ich für paar Kollegen und mich einen Minecraft Server auf. Eigentlich keine große Sache, da ich das schon oft gemacht habe. Seit dem letzten mal startet er aber nicht und gibt folgende Fehlermeldung aus:

[0.055s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached.
Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
        at java.lang.Thread.start0(java.base/Native Method)
        at java.lang.Thread.start(java.base/Thread.java:803)
        at java.lang.ref.Reference.<clinit>(java.base/Reference.java:303)

Oft macht das den ganzen Server kaput, wonach ich ihn neu aufsetzen muss. Zumindest kann ich das Problem nicht anders lösen.

Ich habe das Problem auf meinem alten V-Server schon gehabt und bei meinem neuen ist es nicht anders, selbst mit einem frischen System.

Die Installation läuft wie folgt:

apt install openjdk-11-jre-headless -y

adduser --disabled-login minecraft

su minecraft

cd

wget https://cdn.getbukkit.org/spigot/spigot-1.16.5.jar

java -Xms4096M -Xmx4096M -jar /home/minecraft/spigot-1.16.5.jar

Auf dem Server läuft Ubuntu 18.04.

Nebenbei läuft nur ein Teamspeak. Ein CSGO Server ist installiert läuft aber nicht.

Komisch finde ich das ich das Problem auf unterschiedlichen Servern bekomme, im Internet dazu aber nicht wirklich etwas finden kann. Was mach ich also falsch?

Danke schonmal für eure Hilfe!

Server, Computer, Linux, Java, Ubuntu, Minecraft

Java, textdokument in zweidimensionalen Array speichern und ausgeben?

Hey, bei meiner dieswöchigen Informatik Übung müssen wir ein Spielfeld aus einem Textdokument in ein Zweidimensionales Array einlesen und ausgeben.

Ein Textdokument sieht zB so aus:

https://pastebin.com/5CViAyG5

Ich hätte die Aufgabe mit folgendem Code gelöst:

[CODE]

class Input {

public static void main(String[] args) {

Input x = new Input();

x.openup("MazeWithExit_windows.txt");

}

void openup(String fileName) {

In.open(fileName);

int height = In.readInt();

int length = In.readInt();

Out.println("Height: " + height);

Out.println("Length: " + length);

char [][] a = new char[length][height];

for(int i=0;i<a.length;i++) {

for(int j =0;j<a[i].length;j++) {

a[i][j] = In.read();

Out.print(a[i][j]);

}

}

In.close();

}

}

[/CODE]

Die In und Out Klassen müssen wir verwenden.. Out.print statt System.Out.print

Und In hilft beim einlesen.

So, jetzt zum eigentlichen Problem..

Ansich funktioniert der Code, jedoch liest er auch newlines ein, weshalb das Array vorzeitig voll ist und nicht das ganze Spielfeld einliest.

Ausgabe: https://pastebin.com/czTDF2MA

Uns wurde gesagt, man soll einfach ein dummy-read reinmachen, was die newlines einliest und diese somit nicht zum Array hinzugefügt werden. Jemand hat auch gemeint, dass nach der inneren Schleife ein In.readLine(); das Problem löst.

Doch nichts hat mit geholfen.

Wie löse ich das Problem? :o

Computer, Studium, programmieren, Java, Eclipse, Informatik, Programmiersprache

Minecraft Server geht nicht?

Hallo.

Ich habe gestern auf meinem V Server Multicraft installiert, und jetzt wollte ich einen Server installieren. Es kam dann aber nur diese Fehlermeldung:

03.01 10:52:26[Multicraft] Received start command
03.01 10:52:26[Multicraft] Loading server properties
03.01 10:52:26[Multicraft] Starting server!
03.01 10:52:26[Multicraft] Loaded config for "Default Minecraft Server"
03.01 10:52:26[Server]INFO Exception in thread "main" java.lang.UnsupportedClassVersionError: net/minecraftforge/fml/relauncher/ServerLaunchWrapper : Unsupported major.minor version 52.0
03.01 10:52:26[Server]INFO at java.lang.ClassLoader.defineClass1(Native Method)
03.01 10:52:26[Server]INFO at java.lang.ClassLoader.defineClass(ClassLoader.java:808)
03.01 10:52:26[Server]INFO at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
03.01 10:52:26[Server]INFO at java.net.URLClassLoader.defineClass(URLClassLoader.java:443)
03.01 10:52:26[Server]INFO at java.net.URLClassLoader.access$100(URLClassLoader.java:65)
03.01 10:52:26[Server]INFO at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
03.01 10:52:26[Server]INFO at java.net.URLClassLoader$1.run(URLClassLoader.java:349)
03.01 10:52:26[Server]INFO at java.security.AccessController.doPrivileged(Native Method)
03.01 10:52:26[Server]INFO at java.net.URLClassLoader.findClass(URLClassLoader.java:348)
03.01 10:52:26[Server]INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:430)
03.01 10:52:26[Server]INFO at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:326)
03.01 10:52:26[Server]INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
03.01 10:52:26[Server]INFO at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
03.01 10:52:26[Multicraft] Server shut down (starting)
03.01 10:52:26[Multicraft] Restarting crashed server in 5 seconds
03.01 10:52:26[Multicraft] Stopping server!
03.01 10:52:28[Multicraft] Looks like a crash, check the server console. Return value: 1
03.01 10:52:28[Multicraft] Server stopped

Was muss ich machen dass ich den Server starten kann? Ich möchte Forge 1.12.2 drauf installieren.

PC, Server, Computer, Internet, Software, Fehler, Linux, Programm, IT, Java, Minecraft, EDV, Minecraft Server, Fehlermeldung, Debian, Multicraft

CSV Datei in Php als Tabelle ausgeben?

Hallo, bin ziemlich neu in Php und will ein Programm erstellen, wo man eine Tablle mit Produktgruppe, Datum und Umsatz einliest und das Programm das automatisch als Graphische Tabelle ausgibt, zudem soll das Datum in 4 Quartale sortiert werden.

Ist keine Hausaufgabe!!

Bin noch nicht so weit gekommen:

CSV-Datei:

produktgruppe,datum,umsatz
Tee,01.01.2020,0.76
Kosmetik,01.01.2020,21.65
Tee,02.01.2020,10.10
Gewürze,02.01.2020,18.53
Gewürze,02.01.2020,40.71
Gewürze,02.01.2020,39.06
Kosmetik,02.01.2020,1.65
Tee,03.01.2020,38.03
Kerzen,03.01.2020,41.99
Geschenkkörbe,04.01.2020,13.92
Gewürze,05.01.2020,28.27
Gewürze,05.01.2020,19.84
Kerzen,05.01.2020,19.81
Kerzen,05.01.2020,19.57
Kerzen,05.01.2020,49.97
Kerzen,05.01.2020,14.06
Tee,06.01.2020,42.28
Gewürze,06.01.2020,20.44
Kosmetik,06.01.2020,4.62
Gewürze,07.01.2020,1.28
Kosmetik,07.01.2020,12.46
Gewürze,08.01.2020,9.20
Tee,09.01.2020,32.47
Tee,09.01.2020,4.23
Gewürze,09.01.2020,0.79
Kerzen,09.01.2020,2.97
Kosmetik,09.01.2020,43.68
Kosmetik,10.01.2020,21.67
Kosmetik,10.01.2020,6.44
Tee,12.01.2020,15.09

Vorhandener Programmcode:

print "<table border = 3 cellpadding = 5>";


        foreach($rows as $artikel){
            foreach($artikel as $index=>$wert){
                /* if($zahl % 3){ */
                    /* print "<tr>"; */
                    /* print "$wert<br>"; */
                    print "<th width = 100 align = right bgcolor = green>$wert</th>";
                    /* print "</tr>"; */
                /* }else{
                    print "<br>";
                } */
            }        
        }


    print "</table>";   

Wie es in ca. ausschauen soll:

Da bei mir das ganze leider nicht wie geplant funkt, bin ich nun auf eure Hilfe angewiesen, vielleicht, hat jemand eine Idee?

Lg

Bild zum Beitrag
Computer, Microsoft Excel, programmieren, Java, Datenbank, Informatik, PHP, Tabelle, CSV-Datei

Array Werte einfügen/löschen/ändern?

Hallo ich bin gerade am Java lernen und habe folgendes Problem:

Ich habe ein Array erstellt in dem ich angebe wie viele Zahlen ich eingeben will und diese dann eingeben kann. Nun möchte ich über Switch-Case dem Benutzer die Möglichkeit geben Werte neu an eine beliebige Stelle einzufügen / einen Wert zu löschen / oder einen Wert abzuändern.

import java.util.Scanner;


public class Hausaufgabe71 {


    public static void main(String[] args) {
        Scanner eingabe = new Scanner(System.in);
        
        System.out.println("Wie viele Zahlen sollen eingegeben werden?");
        int anzahlZahlen = eingabe.nextInt();
        double[] zahlen = new double[anzahlZahlen];
        for (int i = 0; i < zahlen.length; i++) {
            System.out.print("Zahl " + (i + 1) + ": ");
            zahlen[i] = eingabe.nextDouble();
        }
        System.out.print("\nAktuelle Zahlen: ");
        for (double element : zahlen) {
            System.out.print(element + " ");
        }
        
        System.out.println("\nSumme: " + summe(zahlen) + " " + "Durchschnitt: " 
                + durchschnitt(zahlen));
        
        System.out.println("Was möchten Sie tun?\n1) Zahl einfügen\n2) Zahl"
                + " löschen \n3) Zahl ändern \n4) Beenden");
        
        int menue = eingabe.nextInt();
    
        switch (menue) {
        case 1:
            System.out.println("\nAn welcher Position möchten Sie die Zahl "
                    + "ändern?\n(1 = erste Zahl; " + (zahlen.length + 1) 
                    + " = hinten anfügen)");
            int pos = eingabe.nextInt();
            
            break;
            


        }
        
    }
    public static double summe(double[] zahlen) {
        double sum = 0;
        for (double value : zahlen) {
            sum += value;
        }
        return sum;
    }
    public static double durchschnitt(double[] zahlen) {
        double dur = 0;
        for (int i = 0; i < zahlen.length; i++) {
            dur += zahlen[i];
        }
        return dur / zahlen.length;
    }
}

Das ist mein bisheriger Quelltext.

Hat jemand einen Ansatz für mich wie ich diese Punkte realisiere?

MfG

Computer, programmieren, Java

Java: Wie kann ich die Werte für die Matrix einlesen, nachdem ich die Spalte und Zeile eingelesen habe?

Ich stecke bei einer Aufgabe leider etwas fest.

Schreiben Sie ein Programm  Matrix, welches ein zweidimensionales Array übergeben bekommt und die Summe aller Werte in diesem Array berechnet.
Das erste, von der Konsole übergebene Argument, ist die Anzahl der Zeilen. Das zweite die Anzahl der Spalten des Arrays. Die restlichen Argumente sind Werte, mit denen das Array gefüllt werden soll. Gehen Sie davon aus, dass nur ganze Zahlen (positiv und negativ) übergeben werden.
Ihr Programm soll erst die Summe und anschließend die gesamte Matrix zeilenweise ausgeben. Falls zu wenige, oder zu viele Argumente von der Konsole übergeben werden oder die übergebenen Größenwerte negativ sind, soll Ihr Programm eine Fehlermeldung ausgeben, welche das Wort  ERROR enthält.
Eine Matrix der Größe 0 x 0
0×0 zählt als valide Matrix und hat die Summe $0$.

Ich habe bereits einen Ansatz zum Einlesen der Matrix. Dieser funktioniert aber nicht so ganz und ist noch unvollständig, da ich bei einigen Sachen nicht weiter komme.

Zum Beispiel, wie ich die Werte einlesen soll, nachdem ich die Spalte und Zeile eingelesen habe.

public class Matrix {
  public static void main(String[] args) {
    int zeile = Integer.parseInt(args[0]);
    int spalte = Integer.parseInt(args[1]);
    int Werte = Integer.parseInt(args[2]);
    int sum = 0;

    int[][] matrix = new int[zeile][spalte];

    for (int i = 0; i < zeile; i++) {
      for (int j = 0; j < spalte; j++) {
        matrix[i][j] = ???
        sum = matrix[i][j] + matrix[i][j];
      }

      System.out.println(sum);
      System.out.println(matrix[i][j]);
    }            
Schule, programmieren, Java, Array, Matrix

Meistgelesene Beiträge zum Thema Java