2015-10-22 2 views
0

У меня есть программа для игровых автоматов. программа работает должным образом, но что не спрашивает, хотят ли они рассчитывать на игру. конкретная строка кода "программа не ждет соответствующего ввода

System.out.println("play again?"); 
    ans =scan.nextLine();" 
package project3_16; 
import java.util.*; 

public class Project3_16 { 


public static void main(String[] args) { 
Scanner scan = new Scanner(System.in); 
int money=0,bet=0,ReturnBet,hold=0,hold1=0,hold2=0; 
String ans=("yes"),slota,slotb,slotc; 
int again=0; 
String[] slot1 = {"۞","☯","☠","♕","∎","☢","♨","♣","Ω","★"}; 

while(ans.equalsIgnoreCase("yes")){ 

    System.out.println("Would you like to play the slot machine?"); 
    ans= scan.nextLine(); 

    if(ans.equalsIgnoreCase("yes")){ 
    System.out.println("How much moeny do you have?"); 
    money =scan.nextInt(); 
    } 

    while(ans.equalsIgnoreCase("yes")) 
    { 
    slota =(slot1[new Random().nextInt(slot1.length)]); 
    slotb =(slot1[new Random().nextInt(slot1.length)]); 
    slotc =(slot1[new Random().nextInt(slot1.length)]); 

    System.out.println("How much would u like to bet?"); 
    bet = scan.nextInt();   

    while(bet>money) 
    { 

     System.out.println("you do not have enough money"); 
     System.out.println("How much would u like to bet?"); 
     bet = scan.nextInt(); 

    } 
    hold = money-bet; 
    hold1=hold; 

    if(slota.equals(slotb) && slotb.equals(slotc)) 
    { 
     System.out.println("congrats you won"); 
     hold= money+(bet*2); 
     System.out.println("you have $"+hold1); 
     System.out.println("" +slota +" " +slotb +" " +slotc); 
    } 

    if(!slota.equals(slotb) && !slotb.equals(slotc) && !slota.equals(slotc)) 
    { 
     System.out.println(" you lost"); 
     System.out.println("you have $"+hold1); 
     System.out.println("" +slota +" " +slotb +" " +slotc);    
    }   

    if(slota.equals(slotb) && !slota.equals(slotc)) 
    { 
     System.out.println("keep your money"); 
     hold1=hold1+bet; 
     System.out.println("you have $"+hold1);    
     System.out.println("" +slota +" " +slotb +" " +slotc);    
    } 

    if(slotb.equals(slotc) && !slota.equals(slotc)) 
    { 
     System.out.println("keep your money"); 
     hold1=hold1+bet; 
     System.out.println("you have $"+hold1);    
     System.out.println("" +slota +" " +slotb +" " +slotc); 
    } 

    if(slotc.equals(slota) && !slotc.equals(slotb)) 
    { 
     System.out.println("keep your money"); 
     hold1=hold1+bet; 
     System.out.println("you have $"+hold1);    
     System.out.println("" +slota +" " +slotb +" " +slotc);    
    } 
    if(hold1==0 || money==0 || hold==0) 
    { 
     System.out.println("you are broke"); 
     ans=("no"); 

    } 
    money=hold1; 
     } 
    System.out.println("play again?"); 
    ans =scan.nextLine(); 
    }  
} 
} 

ответ

0

Попробуйте это:.

scan.nextLine(); 
ans = scan.nextLine(); 

Существует символ новой строки, сидя там, что вам нужно съесть

+0

ДА СПАСИБО: DDDD – idk0namz

+0

Без проблем рад, что я мог бы помочь! – brso05

0

Я разместил это в другом месте, но ...

Попробуйте использовать scnr.nextLine(); вместо scnr.next();

Причина этого связана с токенами. следующая документация() 's говорит:

общественность строкового следующие()

Находит и возвращает следующий полный маркер из этого сканера.

Токен обычно разделен пробелами ("\ n", "\ t", "") и поэтому не будет распознавать ваш символ "enter" или "\ n" в качестве токена. Вот почему он будет продолжать читать, думая, что вы не ввели никаких токенов.

nextLine(), с другой стороны, будет читать, пока не найдет символ «\ n». Это означает, что когда вы входите, он читает символ «\ n», тем самым устанавливая ваш выбор как «».

Смежные вопросы