Programm stoppt einfach ohne Grund

Diskutiere Programm stoppt einfach ohne Grund im Java Basics - Anfänger-Themen Bereich.
K

Killer09

Mein Programm stoppt einfach ohne Grund und geht erst weiter nach dem man eine Taste gedrückt hat.
Die Funktion meines Programms ist folgende man hat ein Feld worauf man eine Spielfigur bewegen kann und Ziele Abschießen muss, jedoch muss man wenn man in decision1 etwas eingegeben hat und mit enter bestätigt hat etwas weiteres eingeben damit das Programm weiterläuft. Weiß wer woran das liegt?
Java:
import java.util.InputMismatchException;
import java.util.Scanner;

public class Start {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int decision1 = 0;
        int temp = 0;
        Multiplayer multi = new Multiplayer();
        Program single = new Program();
        
        while(temp == 0) {
        System.out.println("Wollen Sie Singleplayer(1) oder Multiplayer(2) spielen? Beenden(3)");
        
            try {
                decision1 = sc.nextInt();
            } catch (InputMismatchException e) {
                System.out.println("Falschen Buchstaben eingegeben!");
            }
                if(decision1 == 1) {
                    single.main(args);
                }
                else if(decision1 == 2) {
                    multi.main(args);
                }
                else if(decision1 == 3) {
                    temp++;
                }
        } 
        
    }

}
 
F

fhoffmann

Da ich die Klassen Multiplayer und Prorgram nicht kenne,kann ich nur raten:
Die Methode Scanner::nextInt() liest nur die Zahl und nicht den folgenen´den Zeilenumbruch (ENTER). Möglicherweise liegt dein Problem darin.
 
K

Killer09

Wie kann ich diesen Fehler dann beheben? und hier die 2 Klassen
Java:
import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;

public class Multiplayer {

    public static void main(String[] args) {

        Random random = new Random();
        
        Field fieldGame = new Field();
        fieldGame.buildField();
        
        Player player1 = new Player(fieldGame);
        Player player2 = new Player(fieldGame);
        while(player1.getCurrentColumn() == player2.getCurrentColumn() && player1.getCurrentRow() == player2.getCurrentRow()) {
            player2.setCurrentColumn(random.nextInt(9));
            player2.setCurrentRow(random.nextInt(9));
            if(player2.getCurrentColumn() < 1) {
                player2.setCurrentColumn(1);
            }
            else if(player2.getCurrentRow() < 1) {
                player2.setCurrentRow(1);
            }
        }
        Target target1 = new Target(fieldGame, player1);
        fieldGame.printField();
        
        String decision;
        int temp = 0;
        int whoseTurn = 0;
        int score1 = 0;
        int score2 = 0;
        
        
        Scanner sc = new Scanner(System.in);
        
        do {
        if(whoseTurn == 0) {
        System.out.println("Spieler eins an der Reihe!");
        System.out.println("Führen Sie eine Aktion (g = vorwärtsgehen, b = rückwärtsgehen, l = links drehen, r = rechts drehen, s = schießen, q = MainMenu) aus: ");
        decision = sc.next();
        
        switch(decision) {
            case "g": player1.goForward(fieldGame); break;
            case "b": player1.goBackward(fieldGame); break;
            case "l": player1.rotateLeft(fieldGame); break;
            case "r": player1.rotateRight(fieldGame); break;
            case "s": player1.shoot(fieldGame);break;
            case "q": System.out.println("Sind Sie sich sicher das Sie zum MainMenu zurückkehren wollen Ihr Score wird nicht gespeichert?(j = 1/n = 0)");
                        try {
                        temp = sc.nextInt(); 
                        } catch(InputMismatchException e) {
                            System.out.println("Sie haben eine falsche Taste gedrückt!");
                            System.out.println();
                        }
                        if(temp == 0) {
                        fieldGame.printField(); break;
                        }
                        else {
                            break;
                        }
            default: System.out.println("Sie haben eine falsche Taste gedrückt!"); break;
            }
        target1.randomLocation(fieldGame);
        score1 = score1 + target1.getScore();
        System.out.println("Dein Score ist: " + score1);
        whoseTurn++;
        }
        else if(whoseTurn == 1) {
            System.out.println("Spieler zwei an der Reihe!");
            System.out.println("Führen Sie eine Aktion (g = vorwärtsgehen, b = rückwärtsgehen, l = links drehen, r = rechts drehen, s = schießen, q = beenden) aus: ");
            decision = sc.next();
            
            switch(decision) {
                case "g": player2.goForward(fieldGame); break;
                case "b": player2.goBackward(fieldGame); break;
                case "l": player2.rotateLeft(fieldGame); break;
                case "r": player2.rotateRight(fieldGame); break;
                case "s": player2.shoot(fieldGame);break;
                case "q": System.out.println("Sind Sie sich sicher?(j = 1/n = 0)");
                            try {
                            temp = sc.nextInt(); 
                            } catch(InputMismatchException e) {
                                System.out.println("Sie haben eine falsche Taste gedrückt!");
                                System.out.println();
                            }
                            if(temp == 0) {
                            fieldGame.printField(); break;
                            }
                            else {
                                break;
                            }
                default: System.out.println("Sie haben eine falsche Taste gedrückt!"); break;
                }
            target1.randomLocation(fieldGame);
            score2 = score2 + target1.getScore();
            System.out.println("Dein Score ist: " + score2);
            whoseTurn--;
        }
        } while(temp == 0);
    }

}
Java:
import java.util.InputMismatchException;
import java.util.Scanner;

public class Program {

    public static void main(String[] args) {
        
        Field fieldGame = new Field();
        fieldGame.buildField();
        
        Player player1 = new Player(fieldGame);
        Target target1 = new Target(fieldGame, player1);
        fieldGame.printField();
        
        String decision;
        int temp = 0;
        int score = 0;
        
        Scanner sc = new Scanner(System.in);
        
        do {
        System.out.println("Führen Sie eine Aktion (g = vorwärtsgehen, b = rückwärtsgehen, l = links drehen, r = rechts drehen, s = schießen, q = MainMenu) aus: ");
        decision = sc.next();
        
        switch(decision) {
            case "g": player1.goForward(fieldGame); break;
            case "b": player1.goBackward(fieldGame); break;
            case "l": player1.rotateLeft(fieldGame); break;
            case "r": player1.rotateRight(fieldGame); break;
            case "s": player1.shoot(fieldGame);break;
            case "q": System.out.println("Sind Sie sich sicher das Sie zum MainMenu zurückkehren wollen Ihr Score wird nicht gespeichert?(j = 1/n = 0)");
                        try {
                        temp = sc.nextInt(); 
                        } catch(InputMismatchException e) {
                            System.out.println("Sie haben eine falsche Taste gedrückt!");
                            System.out.println();
                        }
                        if(temp == 0) {
                        fieldGame.printField(); break;
                        }
                        else {
                            break;
                        }
            default: System.out.println("Sie haben eine falsche Taste gedrückt!"); break;
            }
        target1.randomLocation(fieldGame);
        score = score + target1.getScore();
        System.out.println("Dein Score ist: " + score);
        } while(temp == 0);
    }
}
 
K

Killer09

Ich habe gerade mein Programm mithilfe der IDE Eclipse erneut gestartet und es scheint so als sei das ein Problem von Eclipse gewesen zu sein, da es heute morgen direkt so wie früher funktioniert hat als ich die Klasse start noch nicht hatte.
 
Kirby_Sike

Kirby_Sike

Also beheben kannst du das z.B. so
Java:
Scanner in = new Scanner(System.in);
int zahl = Integer.parseInt(in.nextLine());
 
Thema: 

Programm stoppt einfach ohne Grund

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben