Java – die neusten Beiträge

Java : Warum wartet der Scanner nicht auf meine Eingabe?

Hallo,

Gebt mal folgenden Code bei euch ein und startet :

package Lernen;

import java.util.Arrays;
import java.util.Scanner;

public class CarSeller {

    int rColor = (int)(Math.random()*9);
    int color;
    int ps;
    int mark;
    String color2;
    String ps2;
    String mark2;
    String[] colorArray = new String[10];

    public void price(int color, int ps, int mark) {
        this.color = color;
        this.ps = ps;
        this.mark = mark;
    }

    public int RandomColor() {
        System.out.println(colorArray[rColor]);
        return 1;
    }

    public static void main(String[] args) {
        CarSeller acess = new CarSeller();
        acess.colorArray[0] = "Black";
        acess.colorArray[1] = "Green";
        acess.colorArray[2] = "Red";
        acess.colorArray[3] = "Orange";
        acess.colorArray[4] = "Blue";
        acess.colorArray[5] = "Cyan";
        acess.colorArray[6] = "White";
        acess.colorArray[7] = "Brown";
        acess.colorArray[8] = "Yellow";
        acess.colorArray[9] = "Grey";

        System.out.println("Hey, what do you want to do ? | BUYCAR | DRIVE | GOINHOUSE | BUYPLOTS | REFUEL | QUIT |");
        Scanner start = new Scanner(System.in);

        if (start.equals("BUYCAR")) {
            System.out.println("What car do you want to buy? | Lamborghini | Porsche | VW | Mercedes | BMW  | Tesla | CANCEL|");
            Scanner a = new Scanner(System.in);
            
            if (a.equals("Lamborghini")) {
                
                  CarSeller Lamborghini = new CarSeller();
                  System.out.println("Which color do you want ? | Choose one ");
                  System.out.println(Arrays.toString(acess.colorArray));
                  System.out.println("Or do you want a random color ? | Random");
                  Scanner colorchoose = new Scanner(System.in);
                  
                  if (colorchoose.equals("Random")) {
                      System.out.println(acess.RandomColor());
                  }


            }

        }
    }

}

Bei mir wartet der irgendwie nicht auf eine Eingabe... Wie behebe ich diesen Fehler ?

PC, Computer, Technik, IT, programmieren, Java, Informatik

Android Studio: Wieso verändern die Elemente ihre Position?

Hey,

ich habe da ein kleines Problem. Auf dem PC sind alle Elemente dort, wo sie sein sollten, aber wenn ich die App auf dem Handy ausführe, sind die Elemente irgendwie bzw. irgendwo platziert. Kann mir jemand vielleicht sagen, woran es liegen könnte?

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/black_shade_1"
  tools:context=".MainActivity">
  <ImageView 
    android:layout_width="152dp"
    android:layout_height="185dp" 
    app:srcCompat="@drawable/iconqrlogo" 
    android:id="@+id/imageView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="32dp"
    app:layout_constraintHorizontal_bias="0.498" />
  <ProgressBar
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progressBar"
    android:visibility="visible"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    android:layout_marginTop="56dp"
    app:layout_constraintTop_toBottomOf="@+id/imageView" />
  <Button
    android:text="@string/generateButton"
    android:layout_width="250dp"
    android:layout_height="60dp"
    android:id="@+id/generateQrCode"
    app:backgroundTint="@color/yellow"
    android:textColor="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintHorizontal_bias="0.496"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_marginBottom="160dp" />
  <Button
    android:text="@string/scanCode"
    android:layout_width="250dp"
    android:layout_height="60dp"
    android:id="@+id/scanQrCode"
    app:backgroundTint="@color/yellow"
    android:textColor="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/progressBar"
    android:layout_marginTop="48dp"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintBottom_toTopOf="@+id/generateQrCode"
    app:layout_constraintVertical_bias="0.061" />
</androidx.constraintlayout.widget.ConstraintLayout>
Bild zum Beitrag
Computer, App, programmieren, Java, Android, Android App, Android Studio

Labyrinth Rekursiv durchsuchen Performance?

Ich bin dabei ein Labyrinth Rekursiv zu durchsuchen. Klappt auch bei kleinen Labyrinthen.

Code ist folgender, sollte eigentlich selbsterklärend sein denk ich. Problem ist nun folgendes. Der Professor hat viele JUnit Tests geschrieben und bei großen Labyrinthen dauert es zu lang (4s) und bricht daher ab. Wie schreibe ich den Code Performanter? Oder hab ich einen Denkfehler im Code?

Sprache natürlich Java

Ich kann nicht ausschließen, dass die Tests nicht dazu da sind zu erkennen wie performant der Code generell ist. Heißt, dass man guckt wie viele Tests er schafft um zu wissen welche Performance klasse man so etwa hat.

Stack<Coordinate> shortestPath;

private void recursivelyDiscoveryMaze(int x, int y, int depth, Stack<Coordinate> currentPath) {
    //this.maze.prettyPrint();
    currentPath.push(new Coordinate(x, y));
    if (dX == x && dY == y) {
        if (shortestPath.size() > currentPath.size() || shortestPath.size() == 0) {
            shortestPath = (Stack<Coordinate>) currentPath.clone();
        }
        currentPath.pop();
        return;
    }

    this.maze.getMazeField()[x][y] = 1; //set visited
    depth++;
    if (isValidStep(x + 1, y)) //if can be visited
        recursivelyDiscoveryMaze(x + 1, y, depth, currentPath);
    if (isValidStep(x, y + 1))
        recursivelyDiscoveryMaze(x, y + 1, depth, currentPath);
    if (isValidStep(x - 1, y))
        recursivelyDiscoveryMaze(x - 1, y, depth, currentPath);
    if (isValidStep(x, y - 1))
        recursivelyDiscoveryMaze(x, y - 1, depth, currentPath);
    depth--;
    this.maze.getMazeField()[x][y] = 0; //set unvisited 
    currentPath.pop();
}
Computer, Mathematik, programmieren, Java, Informatik, labyrinth, Rekursion

Warum funktioniert nur bei mir Better Minecraft Modpack nicht?

Hallo.

Also ich habe mir Better Minecraft Modpack aus CurseForge Launcher Heruntergeladet.

Als ich die Modpack gestartet habe, hat sich bei mir erstmal das hier geöffnet:

Und danach schließt sich der Launcher und es kommt diese Exit Code 0 Fehlermeldung:

Und dann in Ausgabeprotokoll steht das hier:

21:48:40.541
Preparing to launch minecraft client for forge-36.2.9
21:48:42.457
Couldn't fetch SHA1 checksum for https://s3.amazonaws.com/Minecraft.Download/versions/1.16.5/1.16.5.jar
21:48:42.458
Have local file C:\Users\PrinzPersia\curseforge\minecraft\Install\versions\1.16.5\1.16.5.jar but don't know what size or hash it should be. Have to assume it's good.
21:48:42.461
Minecraft client forge-36.2.9 is ready to start.
21:48:42.461
Starting!
21:48:43.654
Version does not support log configuration, will assume one plaintext entry per line
21:48:44.747
2021-11-13 21:48:44,745 main WARN Advanced terminal features are not available in this environment
21:48:45.026
[21:48:45] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, PrinzPersia, --version, forge-36.2.9, --gameDir, C:\Users\PrinzPersia\curseforge\minecraft\Instances\Better Minecraft [FORGE] - 1.16.5, --assetsDir, C:\Users\PrinzPersia\curseforge\minecraft\Install\assets, --assetIndex, 1.16, --uuid, b658a55b593845ad8c5b8ceebb2e16d5, --accessToken, ????????, --userType, mojang, --versionType, release, --width, 1920, --height, 1080, --launchTarget, fmlclient, --fml.forgeVersion, 36.2.9, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20210115.111550]
21:48:45.033
[21:48:45] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.0.9+86+master.3cf110c starting: java version 1.8.0_51 by Oracle Corporation
21:48:45.059
[21:48:45] [main/WARN] [cp.mo.mo.SecureJarHandler/]: LEGACY JDK DETECTED, SECURED JAR HANDLING DISABLED
21:48:45.950
[21:48:45] [main/INFO] [ne.mi.fm.lo.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust
21:48:46.033
[21:48:46] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/C:/Users/PrinzPersia/curseforge/minecraft/Install/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar Service=ModLauncher Env=CLIENT
21:48:49.405
Exception in thread "main" [21:48:49] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]: java.lang.NoClassDefFoundError: net/minecraftforge/fml/javafmlmod/FMLJavaModLanguageProvider

Und was noch sehr seltsam ist, mein Kumpel hat sich auch die gleiche Modpack aus CurseForge Heruntergeladet, und bei seinem PC hat diese Modpack funktioniert. Nur bei meine PC irgendwie nicht.

Weiß jemand woran es liegt, und wie ich diese Modpack zum laufen bringen kann?


Und was noch sehr seltsam ist, mein Kumpel hat sich auch die gleiche Modpack aus CurseForge Heruntergeladet, und bei seinem PC hat diese Modpack funktioniert. Nur bei meine PC irgendwie nicht.

Weiß jemand woran es liegt, und wie ich diese Modpack zum laufen bringen kann?

Bild zum Beitrag
Spiele, PC, Computer, Games, Mods, Java, Rechner, Minecraft, Forge, Mojang, CurseForge

Java: Wieso bekomme ich diesen Fehler ("ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 9")?

Bei meinem Code kommt nach der Eingabe eines Wortes immer folgender Fehler.

Das ist alles von der Konsole:

Bitte geben Sie ein Wort für das B-Sprachen Spiel ein: Hallo
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 9
at B_SprachenSpiel/Lektion_7.B_SprachenSpiel.Spiel(B_SprachenSpiel.java:42)
at B_SprachenSpiel/Lektion_7.B_SprachenSpiel.main(B_SprachenSpiel.java:14)

Danach sollte eigentlich noch das Wort (in dem Fall Hallo) ausgegeben werden, nur dass es durch die Änderung dann Haballobo heißt. Das soll das Programm machen. Doch ich verstehe nicht, wieso immer wieder dieser Fehler kommt.

Folgendes ist mein kompletter Code von diesem Programm:

package Lektion_7;

import java.lang.reflect.Array;
import java.util.Scanner;

public class B_SprachenSpiel {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Bitte geben Sie ein Wort für das B-Sprachen Spiel ein: ");
    String B = sc.nextLine();
    Spiel(B);

    // System.out.println("Das umgewandelte Wort lautet: " + Spiel(B));
  }

  public static void Spiel(String Wort) {
    char[] x = new char [100];
    x = Wort.toCharArray();
    System.out.println(x.length);
    int y = x.length;
    int lang = x.length;

    for (int i = 0; i < y; i++) {
      if (x[i] == 'a' || x[i] == 'e' || x[i] == 'i' || x[i] == 'o' || x[i] == 'u') {
        lang += 2;
      }
    }

    System.out.println(lang);
    char[] neu = new char[lang];

    for (int i = 0; i <= neu.length; i++) {
      if (neu[i] == 'a' || neu[i] == 'e' || neu[i] == 'i' || neu[i] == 'o' || neu[i] == 'u') {
        neu[i] = (char) (x[i] + 'b' + (char) x[i]);
      }
    }

    String z = x.toString();
    System.out.println("                         Das umgewandelte Wort lautet: " + String.valueOf(neu));
    // for (int i = 0; i <= x.length; i++)
    //		{
    //			System.out.print(x[i]);
    //		}
  }
}
Computer, programmieren, Java, Array, Informatik

PQ-Formel mit Eclipse?

Hallo,

ich hab versucht eine PQ-Formel zu erstellen:

        static final double pqFormeln(double a, double p, double q, boolean art) 
        {
                try 
                {
                  p/=a; q/=a;
                } catch (ArithmeticException e) 
                {
                  p/=-2;
                }
                double r = sqrt(p*p-q);
                if (isNaN(r))
                        throw new ArithmeticException("Keine reele Zahl. Lösung des "+(art?'+':'-')+" x Bereiches nicht möglich.");
                return art?p+r:p-r;
        }
        
        private static boolean isNaN(double r)
        {
                
                return false;
        }

        private static double sqrt(double d) 
           {
                return 0;
        }


}

Allerdings kann ich kein Java run machen. Meine Aufgabe lautet:

Wir wollen ein Programm schreiben, das die Nullstellen von quadratischen Funktionen der Form f(x) = x 2 + px + q berechnet. Die aus der Mathematik bekannte pq-Formel liefert uns die Nullstellen: x1,2 = − p 2 ± r p 2 4 − q Wenn der Term unter der Wurzel negativ ist, hat die Funktion keine (reelle) Nullstelle; ist er gleich 0, so gibt es genau eine Nullstelle. Schreiben Sie ein Programm PQ , welches p und q als Parameter ubergeben bekommt, die ¨ Nullstellen berechnet und ausgibt; geben Sie dabei zuerst die kleinere Nullstelle aus. Geben Sie anschließend aus, wie viele Nullstellen es gibt (Ausgabe nach dem Schema ” Es gibt 2 Nullstellen.“). Falls nicht genau 2 Argumente beim Programmaufruf angegeben werden, soll eine beliebige Fehlermeldung ausgegeben werden, die mit ERROR beginnt. 

Kann mir jemand hier helfen?

Computer, Studium, Schule, Mathematik, Java, Informatik, pq-Formel

Java Chess programmieren?

Hallo,

ich soll ein Chess Programm schreiben, welches eine positive, ganze Zahl n als Argument von der Konsole übergeben bekommt und ein Schachbrett der Größe n × n auf der Standardausgabe ausgibt. Das Brett beginnt oben links mit einem schwarzen Feld. Wenn kein Argument angegeben wird oder die eingegebene Zahl negativ ist, soll das Programm eine Fehlermeldung ausgeben, welche mit ERROR beginnt. Ich schreibe das Programm mit Eclipse

Das hab ich bis jetzt:

  public static void main(String args[]) {

  

   int breite = 5;

  

  

   System.out.println("* * *");

   System.out.println(" * * ");

   System.out.println("* * *");

   System.out.println(" * * ");

   System.out.println("* * *");

  

   for(int anzahlSterne = 1; anzahlSterne <= breite; anzahlSterne++) {

   System.out.println(anzahlSterne);

   for(int sternnummer = 1; sternnummer <= anzahlSterne; sternnummer++) {

   System.out.print("* ");

   }

   System.out.println();

  

   {

  

   }

  

   }

   for(int anzahlSterne = breite -1; anzahlSterne <= 1; anzahlSterne++) {

   System.out.println(anzahlSterne);   

   for(int sternnummer = 1; sternnummer <= anzahlSterne; sternnummer++) {

   System.out.print("* ");

   }

   System.out.println();

   }

  }

   

}

Ich komme halt echt nicht weiter und ich sitze seit zwei Tagen an den Aufgaben. Kann mir vielleicht jemand helfen?

Mit freundlichen Grüßen

Computer, Studium, Schule, programmieren, Java, Informatik, Universität, Schachbrett, eclipse java

Meistgelesene Beiträge zum Thema Java