java中 的变量在方法间的传递权限问题

我现在定义了方法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;
}

}

5个回答

我蒙圈了,作为全局变量的a不是在main()方法中定义的,而是在方法外定义的,只要在类里面,方法外面定义a就行了,在方法里面来接收

我蒙圈了,作为全局变量的a不是在main()方法中定义的,而是在方法外定义的,只要在类里面,方法外面定义a就行了,在方法里面来接收

你的a不是全局变量,全局变量又叫类变量

变量a的作用域是定义该变量的最里面一层的大括号,也就是main方法,在s1 s2方法中如果想使用,可以做为参数传入s1。

你这描述的,看了半天才看懂什么意思。。。。。。。。。。。。。首先方法内的变量属于局部变量,不能跨方法传递,要想传递两种方法,1,s1(int a)
s2(int a)作为参数传进去,2将变量a放到方法外申明,变为全局变量。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问