2014-04-01 52 views
0
public class NewTest { 
    @Test 
    public static void main(String [] args) throws IOException { 
     new NewTest(); 
     NewTest.test(); 
     System.out.println(myname); 
    } 
    public static void test(){ 
     String myname = "Sivarajan"; 
    } 
} 

如何打印myname?运行此程序时出现初始化错误。如何将字符串值从子方法传递给java中的main方法?

+0

通过阅读教程:http://docs.oracle .com/javase/tutorial/java/javaOO/index.html –

+0

由于'myname'是在'test()'内声明并初始化的,所以你不能在别处访问它。如果你想在其他地方使用这个变量,你可以把它定义为一个类变量。 – csmckelvey

+0

@tsivarajan请提供一些关于提供的答案的反馈,以便我们可以看到这个问题是否得到解决。 – csmckelvey

回答

0

Java变量有不同的范围。如果你在一个方法中定义一个变量,那么它在另一个方法中是不可用的。

的方式来解决它在你的代码:

1把这些变量作为成员类

public class NewTest { 

    public static String myname = "Sivarajan"; 

    @Test 
    public static void main(String [] args) throws IOException 
    { 
     /*Note that since you are working with static methods 
     and variables you don't have to instantiate any class*/ 
     System.out.println(myname); 
    } 

2进行test返回一个字符串

public class NewTest { 

    @Test 
    public static void main(String [] args) throws IOException 
    { 
     NewTest newt = new NewTest(); 
     System.out.println(newt.test()); 
    } 

    //Note that we did remove the static modifier 
    public String test(){ 
     String myname = "Sivarajan"; 
     return myName; 
     //or simply return "Sivarajan"; 
    } 
} 

延伸阅读:

http://docs.oracle.com/javase/tutorial/java/javaOO/variables.html

http://java.about.com/od/s/g/Scope.htm

+0

你的第二个解决方案目前不会编译,你的方法说它返回一个String类型,但你只创建了一个新的变量,没有返回它。 – Levenal

+0

@Levenal你是对的。固定,谢谢;) – Averroes

+0

我同意你的观点@Averroes – tsivarajan

0

因为你的变量myname声明和test()方法里面初始化,它是在你的程序无法使用其他任何地方。你可以有test()方法返回一个像这样的字符串:

public class NewTest { 
    @Test 
    public static void main(String [] args) throws IOException { 
     new NewTest(); 
     NewTest.test(); 
     System.out.println(test()); 
    } 
    public static String test() { //Changed to return a String 
     return "Sivarajan"; 
    } 
} 

或声明为一个类变量,然后用它在类的所有方法之后

public class NewTest { 
    String myname = "Sivarajan"; //added myname as a class variable 

    @Test 
    public static void main(String [] args) throws IOException { 
     new NewTest(); 
     NewTest.test(); 
     System.out.println(myname); 
    } 
} 
+0

我试图将子方法的值传递给main方法。 @Takendarkk – tsivarajan

0

我知道你在想实现涉及使用对象的“字段”。你所做的是在一个方法中声明一个变量,这意味着它只能在该方法中被引用。通过声明一个字段,然后你可以创建你的类的对象,并且每个人都可以访问该字段,如下所示:

public class NewTest { 
     public static void main(String [] args) { 
     //Create NewTest object 
     NewTest tester = new NewTest(); 

     //Run the method on our new Object 
     tester.test(); 

     //Print the field which we just set 
     System.out.println(tester.myName); 
     } 

     //Set the field 
     public void test(){ 
     myName = "Sivarajan"; 
     } 

    //A public field which is accessible in any NewTest object that you create 
    public String myName = ""; 
    } 
相关问题