首页 > 解决方案 > 如何在另一个方法中使用一个方法的值?

问题描述

我正在尝试编写一个程序来生成一个随机的 3 位数字并将其反转,所以我写了两个方法,其中 getRandomNum 生成数字,reverseDigits 反转它。但是,第二种方法不接受第一种方法生成的随机数,因为第一种方法显示一个 3 位数字,但第二种方法在运行代码时显示 0。

我尝试查找如何在方法之间共享变量,似乎我需要在方法之外使用静态变量。但是对于 reverseDigits,它仍然显示 0。

我错过了什么还是有其他事情要做?

public class MathTrick
{
    static int upperBound = 999;
    static int lowerBound = 100;
        
        //generate random 3 digit number
    static int getRandomNumber = 0;
    static int mDifference = 0;
    
    public static void main(String[]args)
    {
        getRandomNum();
        reverseDigits();
    }
    
    static void getRandomNum()
    {
        int upperBound = 999;
        int lowerBound = 100;
        
        //generate random 3 digit number
        int getRandomNumber = 0;
        int mDifference = 0;
        while (mDifference <= 1)
        {
            getRandomNumber = (int)(Math.random()*((upperBound-lowerBound)+1)) + lowerBound + 1;
            int x = (int)(getRandomNumber/100);
            int y = getRandomNumber%10;
            mDifference = Math.abs(x-y);
        }
        int m = getRandomNumber;
    
    }
    
    static int m = getRandomNumber;
    static void reverseDigits()
    {
        int a = m, reverseDigits = 0;
        while (a != 0)
        {
            int remainder = a % 10;
            reverseDigits = reverseDigits * 10 + remainder;
            a = a / 10;
        }
        int n = reverseDigits;
    }
}

标签: java

解决方案


直接回答你的问题

将此行替换int m = getRandomNumber;m = getRandomNumber;

m基本上,您用局部变量掩盖了静态变量int m


一些变化,这里是(我的建议)。

更改为返回整数的两种方法都getRandomNum返回一个新的随机数,并且该reverseDigits方法返回反转数。此外,reverseDigits获取一个参数 - 一个应该更改的数字。

所以,修改后。

public static void main(String[] args) {
    int randomNum = getRandomNum();
    int reverse = reverseDigits(randomNum);

    System.out.println(randomNum);
    System.out.println(reverse);
}

static int getRandomNum() {
    // 
    return getRandomNumber;
}

static int reverseDigits(int m) {
    // 
    return reverseDigits;
}

您可以删除其他静态字段。


推荐阅读