import java.util.Scanner;public class A {

/**
 * @param args
 */
public static void main(String[] args) {

int j=100;

System.out.println("现给现金为100!");

while (true) {
System.out.println("----Guess Game-----");
System.out.println("1 Large");
System.out.println("2 Small");
System.out.println("3 Quit");

Scanner s = new Scanner(System.in);
System.out.println("请押大小!");
int choice = s.nextInt();
System.out.println("请押入你的现金(整数)!");
int k=s.nextInt();

switch (choice) {
case 1:
System.out.println("Start");
while(k>=0&&k<101){
int n=(int)(Math.random()*100+1);
if(n>=1&&n<50){
System.out.println("不好意思你猜错了!");
System.out.println("系统将扣除你押入的现金!");
k=j-k;
System.out.println("现在你的现金为:"+k);
System.out.println("请重新选择大小!");
break;
  }else{
System.out.println("恭喜你!你猜中了!");
System.out.println("系统将奖励你押入的现金!");
k=j+k;
System.out.println("现在你的现金为:"+k);
break;
    }
}break ;
case 2:
System.out.println("Start");
if(k>=0&&k<101){
int i=(int)(Math.random()*100+1);
if(i>=1&&i<50){
System.out.println("恭喜你!你猜中了!");
System.out.println("系统将奖励你押入的现金!");
k=j+k;
System.out.println("现在你的现金为:"+k);
break;
}else{
System.out.println("不好意思你猜错了!");
System.out.println("系统将扣除你押入的现金!");
k=j-k;
System.out.println("现在你的现金为:"+k);
    System.out.println("请重新选择大小!");
    break;
}
} break;  
default:{
return;
}
} }}
}

解决方案 »

  1.   

    这是我输出的结果
     现给现金为100!
    ----Guess Game-----
    1 Large
    2 Small
    3 Quit
    请押大小!
    1
    请押入你的现金(整数)!
    2
    Start
    恭喜你!你猜中了!
    系统将奖励你押入的现金!
    现在你的现金为:102
    ----Guess Game-----
    1 Large
    2 Small
    3 Quit
    请押大小!
    2
    请押入你的现金(整数)!
    3
    Start
    不好意思你猜错了!
    系统将扣除你押入的现金!
    现在你的现金为:97
    请重新选择大小!
    ----Guess Game-----
    1 Large
    2 Small
    3 Quit
    请押大小!
    和我预期的结果不同
    就是第二个 应该是102-3=99
      

  2.   

    很明显第二次结果为97是因为100-3,也就是没保存到102,依然是100。
    错在k=j-k,k=j+k.这样每次都是用100去减/加变化过的k,应该是j=j-k,j=j+k
      

  3.   

    晕啊  我被误导了。。看了好一会儿。j=k+j
    考虑到静态上去了