我现在定义了方法1(),在该方法里用了scanner获取了一个整数a,对这个整数进行了相关操作,返回了一个字符串s,但是我现在定义了一个方法2(),该方法要接收方法1()返回的字符串s,该方法同时也要用到方法1()中scanner获取的那个整数a,进行操作后返回一个整数b(b用main()函数接收),那么问题就来了,方法1只能返回一个字符串s,那么方法2()怎么获取方法1()的那个用scanner接收到的整数呢?我的想法是将方法1()中的scanner sc=new scanner(System.in), int a=sc,nextInt();在main()方法中定义,那么这个整数a就在方法1中定义整数a1接收,在方法2中用整数a2接收,可是这么做了后却发现不能接收,报错了,这是为什么?
这是我的代码:
package 第一次试验;
import java.util.Scanner;
public class Test22 {
public static void main(String [] args){
int a;
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
}
public static String s1(){
int a1=a;
}
private int s2(){
int a2=a;
}
}
我蒙圈了,作为全局变量的a不是在main()方法中定义的,而是在方法外定义的,只要在类里面,方法外面定义a就行了,在方法里面来接收
我蒙圈了,作为全局变量的a不是在main()方法中定义的,而是在方法外定义的,只要在类里面,方法外面定义a就行了,在方法里面来接收
你的a不是全局变量,全局变量又叫类变量
变量a的作用域是定义该变量的最里面一层的大括号,也就是main方法,在s1 s2方法中如果想使用,可以做为参数传入s1。
你这描述的,看了半天才看懂什么意思。。。。。。。。。。。。。首先方法内的变量属于局部变量,不能跨方法传递,要想传递两种方法,1,s1(int a)
s2(int a)作为参数传进去,2将变量a放到方法外申明,变为全局变量。。。