日期:2014-05-20  浏览次数:20618 次

帮忙猜字游戏问题,给重分!!
本人是一只菜鸟,现在我遇到一个问题,
代码如下:

import java.util.Scanner;
  public class GuessNum1 {
/*
* 显示菜单
*/
public static void displayMenu() {
System.out.println("1 开始猜数");
System.out.println("2 程序退出");
}
/*
* 得到输入的数字
*/
 
public static int Input() {
int get = 0;
Scanner sc = new Scanner(System.in);
String num = sc.nextLine();
try {
get = Integer.parseInt(num);
} catch (Exception e) {
//get = -1;
//System.out.println("输入错误,请重新输入");
}
return get;
}
/*
* 产生随机数1-100
*/
public static int Tandom() {
int i;
i = (int) (Math.random() * 100);
return i;
}
/*
* 猜数字方法
*/
public static boolean GuessNum() {
boolean result = false;
int randomNum = Tandom();
System.out.println("进入猜数:");
for (int i = 1; i <=8; i++) {
int inputNum = Input();// 接受到的数字
if (inputNum < randomNum) {
System.out.println("小了");
System.out.println("你已经猜了" + i + "次!");
} else if (inputNum > randomNum) {
System.out.println("大了");
System.out.println("你已经猜了" + i + "次!");
} else {
int x = (int)((1-(i/8.0f))*100);
System.out.println("恭喜你猜对了,你的战斗力是"+x+"%");
//break;
}  
if (i>8) {
System.out.println("超过次数,尚需努力!");
break;
}
}
return result;
}
/*
* 错误提示
*/
public static boolean disError() {
System.out.println("输入错误,请重新输入");
return false;  
}
/*
* 菜单控制
*/
public static boolean handle(int ref) {
switch (ref) {
case 1:
GuessNum();
break;
case 2: 
return true;
default:
disError();
}
return false; // 返回到主菜main
}

public static void main(String[] args) {
boolean exit = false;
while (!exit) {
displayMenu();
int ref = Input();
exit = handle(ref);
}
}
  }

问题是:
1.
当我猜对数时,为什么每次战斗力却是0%,
其次,当我进行第九次猜数时,为什么结果不是:超过次数,尚需努力,
在此希望各位大侠帮忙解答,谢谢啦


------解决方案--------------------
guessnumber方法可以这样改
Java code

    public static boolean GuessNum() {
        boolean result = false;
        int randomNum = Tandom();
        System.out.println("进入猜数:");
        int i = 1;
        for ( ; i <= 8; i++) {
            int inputNum = Input();// 接受到的数字
            if (inputNum < randomNum) {
                System.out.println("小了");
                System.out.println("你已经猜了" + i + "次!");
            } else if (inputNum > randomNum) {
                System.out.println("大了");
                System.out.println("你已经猜了" + i + "次!");
            } else {
                int x = (int) ((1 - (i / 8.0f)) * 100);
                System.out.println("恭喜你猜对了,你的战斗力是" + x + "%");
                 break;
            }
        }
        if (i > 8) {
            System.out.println("超过次数,尚需努力!");
        }
        return result;
    }