result1,result2,result3都是局部变量,他们的适用范围都是各自所在的{ …… }你试着把他们在前面声明,这样应该没有问题了!

解决方案 »

  1.   

    修改后的程序如下:我没有调试public static int calculate(int number) {        int result1 = 0;
            int result2 = 0;
            int result3 = 0;        if(number>0&&number%2==0) {
                result1=number-number/2-calculate(number-number/2);
            }        if(number>10&&(number%3==0||number%4==0)) {
                int numberA=number%10;
                int numberB=(number/10)%10;
                result2=number-(numberA*numberB)-calculate(number-(numberA*numberB));
            }        if(number>12&&(number%5==0)) {
                result3=number-13-calculate(number-13);
            }

            else {
    result1=result2=result3=number;
            }        return Math.min(Math.min(result1,result2),result3);
        }
      

  2.   

    555555,老师强调过好几遍的,我又忘了:P
    不过我测试了一下,调用它时输入和输出怎么一样?根本就没有变化。我是用main的:
        public static void main(String[] args) throws IOException {        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("# How many beans were you served?");        int number=Integer.parseInt(stdin.readLine());        System.out.println("# Given "+number+" beans, number of beans to eat is:");        int result=calculate(number);        System.out.println(result);
        }
      

  3.   

    这个程序的目的是:对于读入的数number,如果能被2整除,number减去它的1/2;如果能被3或4整除,则减去的数为各位数的数字乘以十位数的数字(只有各位数的,十位数字看作零);如果能被5整除,则减去13。循环使用上述方法,保证最后的得数为正,求满足条件的最小得数。因为这三种方法用时不分先后,可能既能用方法1,也能用方法2,各种情况都要考虑,所以我用递归式。思路没错吧?
    但写出来怎么就不行呢?
      

  4.   

    这是我的源代码:
    import java.io.*;public class Beans {    public static void main(String[] args) throws IOException {        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("# How many beans were you served?");        int number=Integer.parseInt(stdin.readLine());        System.out.println("# Given "+number+" beans, number of beans to eat is:");        int result=calculate(number);        System.out.println(result);
        }    public static int calculate(int number) {   int result1=0;
      int result2=0;
      int result3=0;        if(number>0&&number%2==0) {
                result1=number-calculate(number-number/2);
            }        if(number>10&&(number%3==0||number%4==0)) {
                int numberA=number%10;
                int numberB=(number/10)%10;
                result2=number-calculate(number-(numberA*numberB));
            }        if(number>12&&(number%5==0)) {
                result3=number-calculate(number-13);
            }

      else {
    return number;
            }
            return Math.min(Math.min(result1,result2),result3);    }
    }