Probier es mal mit dem Audioformat mp3. Dann müsste es gehen, ich hatte auch mal das Problem, weil ich es mit avx oder so gemacht hab. Kannst du denn die CD in einem normalen CD-Spieler abspielen?

...zur Antwort

Hier mal eine Klasse, die sollte dir helfen können:

class BildPanel extends JPanel
{

    private static final long serialVersionUID = 1L;
    private BufferedImage img;

    public BildPanel(String dateiName)
    {

        try 
        {
            img = ImageIO.read(getClass().getResourceAsStream(dateiName));
        } 

        catch (IOException e) 
        {
            JOptionPane.showMessageDialog(null, dateiName + " wurde nicht gefunden!");
        }


        this.setPreferredSize(new Dimension(img.getWidth(), img.getHeight()));


    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(img,0,0,null);
    }

}
...zur Antwort
Sudoku Solver per Java

Hallo!

Ich möchte gerne ein programm schreiben, dass mir ein Sudoku lösen kann. Zu diesem zwecke habe ich eine Funktion geschrieben die prüft, ob die Zahl in einem Feld (i,j) mit einer anderen Zahl kollidiert (nach Sudoku-Regeln):

/* 
   * Gibt an, ob die Eintragung in Feld (i,j) alle Bedingungen erfüllt
   */
  private boolean conditionsOK(int i, int j) {
    boolean ok = true;
    // Erste Bedingung: keine doppelte Zahl in Zeile i
    for (int k = 0; k < 9 && ok == true; k++) { // Solange keine Kollision gefunden oder Zeile zuende
      if (k == j) {
      } else if (field[i][k] == field[i][j]) {
        ok = false;
      }
    }
    // Zweite Bedingung: keine doppelte Zahl in Spalte j
    for (int k = 0; k < 9 && ok == true; k++) { // Solange keine Kollision gefunden oder spalte zuende
      if (k == i) {
      } else if (field[k][j] == field[i][j]) {
        ok = false;
      }
    }
    // Dritte Bedingung: keine doppelte Zahl im 3x3-Quadrat, das (i,j) enthält
    int p = i;
    int q = j;
    while (p % 3 != 0) {
      p--;
    }
    while (q % 3 != 0) {
      q--;
    }

    for (int m = 0; m < 3; m++) {
      for (int n = 0; n < 3; n++) {
        if (p == i && q == j) {
        } else if (field[p][q] == field[i][j]) {
          ok = false;
        }
        q++;
      }
      p++;
    }
    return ok;
  }

Zur Erläuterung:

field[9][9] ist mein Spielfeld

Die Methode conditionsOK(int i, int j) bekommt als Parameter das Feld, bei den geprüft werden soll, ob es gegen die Regeln verstößt.

Ich mache das ganze per Backtracking, setze also einfach Zahlen ein, und mach das so lang, bis ich auf nen Fehler Stoße, und dann iweder zurück, und erneut ausprobieren ... usw.

Probleme treten nur bei der dritten Bedingung auf (s. Kommentare im Code), aus irgend einem Grund haut es mir eine OutOfBoundsException raus!

Den Fehler finde ich leider nicht!

Grüße und Danke im Vorraus für Hilfe!

...zum Beitrag

Bau mal ein paar System.out.println() ein und dann findest du schon wo der fehler auftaucht. In welcher Zeile kommt denn der Fehler? Und bei welchen Werten von j und i denn?

...zur Antwort
  • Nein kann man nicht
  • Soweit ich weiß, nicht sondern nur die Bilder an sich im Nachhinein
  • Wieso sollte das nicht gehen? Was funktioniert denn nicht?
...zur Antwort