JAVA解释下运行以下程序为什么出现不能对非静态字段 a 进行静态引用

importjava.util.Scanner;publicclassTest3{intnp=3;intgrade;inta[]=newint[np];staticvoi... import java.util.Scanner;

public class Test3{
int np=3;

int grade;
int a[]=new int[np];
static void getnumber()throws ArithmeticException{
for(int i=0,i<np,i++){
Scanner cin = new Scanner(System.in);
System.out.println("shuru");
int grade= cin.nextInt();
if(grade<0||grade>100){
a[i]=100;
}
else{a[i]=grade;
}
}
for(int i=0,i<np,i++){
System.out.println("a[i]="+a[i]);
}
}
public static void main(String args[]){
Test3.getnumber();
}
}
展开
 我来答
望梓童Su
2013-10-30 · 超过12用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:39.1万
展开全部
非静态的属性是不能够在静态的方法里引用的,想要引用的话必须是用对象来引用
更多追问追答
追问
"a["+i+"]=" + a[i]的加号是啥意思
追答
哪个加号呀?a[i]前面的那个么?这个是拼字符串的,意思是说将a[i]的值连到   a["+i+"]=   的后面,你可以看看输出结果就明白了比如说如果i=1, a[i]=2,这个将输出a[1]=2
百度网友fc40498
2013-10-30 · TA获得超过135个赞
知道答主
回答量:59
采纳率:85%
帮助的人:37.1万
展开全部
因为数组 a 不是静态的啊,getmubber() 方法是静态的,不能直接引用实体变量,把相关变量都改成静态的:
static int np=3;
static int grade;
static int[] a = new int[np];
追问
"a["+i+"]=" + a[i]的加号是啥意思
追答
它是连接字符串用的,并且会将内置类型转换成对应的字符串形式,比如把 a[ i ] 转换成 "3"
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友758f56e49
2013-10-30
知道答主
回答量:6
采纳率:0%
帮助的人:8072
展开全部
因为静态方法或属性会在类被加载的时候初始化 而非静态的属性和方法要在创建对象的时候才初始化 所以在静态的方法引用到非静态的属性a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bo...n@126.com
2013-10-30 · 超过18用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:47万
展开全部
因为你的这句话是静态的static void getnumber()throws ArithmeticException,要想正常运行把数组加上static 或者static void getnumber()throws ArithmeticException这句话的static去掉。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式