如何从另一个void方法访问void方法中的字符串?

时间:2013-07-08 16:01:37

标签: java android

        public void WeatherInfo(){
    .......
    String weatherLocation = weatherLoc[1].toString();
........
}

基本上我有一个名为WeatherInfo的虚拟动态字符串。

但是我需要从另一个空格中获取weatherLocation字符串,比如

    public void WeatherChecker(){

    YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
  yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);
}

因此,我需要能够从此虚空中访问weatherLocation。

我该怎么做?

6 个答案:

答案 0 :(得分:4)

这是scope的问题。您已声明了一个局部变量,因此只能访问本地。如果您希望访问方法之外的变量,请传递引用或将其声明为全局

public void method1()
{
   String str = "Hello";
   // str is only accessible inside method1 
}


String str2 = "hello there"; 
// str2 is accessible anywhere in the class.

修改

如前所述,您应该查看Java naming Conventions

答案 1 :(得分:2)

您可以执行以下任何操作

1)将字符串作为参数传递并设置值

2)使用成员变量并使用getter获取变量

答案 2 :(得分:1)

您需要将其作为参数传递或创建“全局变量”

IE你可以做以下任何一种......

public void methodOne(String string){
    System.out.println(string);
}
public void methodTwo(){
    String string = "This string will be printed by methodOne";
    methodOne(string);
}

OR(更好的解决方案)

在类声明...

下创建一个全局变量
public class ThisIsAClass {

String string; //accessible globally
....
//way down the class

    public void methodOne(){
        System.out.println(string);
    }
    public void methodTwo(){
        String string = "This string will be printed by methodOne"; //edit the string here
        methodOne();
    }

如果您有任何疑问,请与我们联系。当然,您必须相应地更改String string;,但它与任何变量都是相同的概念。

您说过您的“句子”是在其中一种方法中创建的,并且在全局声明时尚未创建。您需要做的就是全局创建String weatherLocation = null;,然后在需要时设置它。我认为这是你的例子,它将在weatherInfo()

之下
public void WeatherInfo(){
    weatherLocation = weatherLoc[1].toString();
}

我们只是编辑我们全局创建的那个,而不是创建一个新的。

-Henry

答案 3 :(得分:0)

我不是100%确定你想要完成什么,或者什么函数调用其他函数......但是你可以将weatherLocation作为参数传递。这是你在找什么?

public void WeatherChecker(String weatherLocation){
  YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
  yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);
}

答案 4 :(得分:0)

你不能直接这样做,因为方法中的局部变量只存在于它们的声明到块的末尾(最迟是方法的结尾)。

如果需要在多个方法中访问变量,可以将其设为类变量(或字段)。为字段分配值后,它将保存为对象的状态,以后可以随时访问和修改。这当然意味着你必须先设置它。

答案 5 :(得分:0)

也许尝试在您尝试使用它的方法范围内将您的String声明更高。您必须确保首先调用WeatherInfo()(可能在构造函数中),以便初始化它或者您会得到奇怪的结果。

public Class {
String weatherLocation = null;

public void WeatherInfo(){
    ........
    weatherLocation = weatherLoc[1].toString();
    ........
}
public void WeatherChecker(){
    YahooWeatherUtils yahooWeatherUtils = YahooWeatherUtils.getInstance();
    yahooWeatherUtils.queryYahooWeather(getApplicationContext(), weatherLocation, this);    
}
}