一个入门级的java代码问题
答案:3 悬赏:70
解决时间 2021-02-18 02:31
- 提问者网友:斩断情丝
- 2021-02-17 09:58
public class HighScore{
private static String name;
private static int score;
HighScore(String n, int s){...} //略
public static void setScore(int s){...} //略
public static int getScore(){...} //略
public static void setName(String n){
name = n;
}
public static String getName(){
return name;
}
}
------------------------------------------------------------------
import java.util.Scanner;
public class HighScoresProgram {
public static void main(String args[]){
HighScore[] list = new HighScore[5];
initialize(list);
}
public static void initialize(HighScore[] list){
Scanner input = new Scanner(System.in);
System.out.print("Enter the name for score #"+ 1 +": ");
list[0].setName(input.nextLine());//第一次输入aaa
System.out.println(list[0].getName());// list[0]显示aaa
System.out.print("Enter the name for score #"+ 2 +": ");
list[1].setName(input.nextLine());//第二次输入bbb
System.out.println(list[0].getName());// list[0]显示bbb
}
//其余略
}
------------------------------------------------------------------------------
以上是一个类和一个测试代码。
测试代码的时候我第一次输入给list[0]的name设置了aaa,下面的list[0]显示aaa没错,
但是第二次我给list[1]的name设置了bbb,再回头查看list[0]的时候list[0]也变成了bbb了,
求解各路大神赐教感激不尽~~~!
最佳答案
- 二级知识专家网友:woshuo
- 2021-02-17 10:34
private static String name;
private static int score;static 去掉 ,static修饰的成员变量会变成静态变量,归属于类而非对象本身.
你输一个ccc,他还会显示ccc,静态变量只有一份,保存在方法区,所有对象共享一个,
也就是list里面的所有HighScore共享一个name,那个name就是你最后一次修改的,
每一次修改都会覆盖原有的值.类似于
int a=1;
a=2;
System.out.println(a);
private static int score;static 去掉 ,static修饰的成员变量会变成静态变量,归属于类而非对象本身.
你输一个ccc,他还会显示ccc,静态变量只有一份,保存在方法区,所有对象共享一个,
也就是list里面的所有HighScore共享一个name,那个name就是你最后一次修改的,
每一次修改都会覆盖原有的值.类似于
int a=1;
a=2;
System.out.println(a);
全部回答
- 1楼网友:闲懒诗人
- 2021-02-17 11:47
你这static是类变量啊,全部类共享一个类变量,不能用static
改的话 第一 HighScore里的static全去掉
第二 HighScore[] list = new HighScore[5];
initialize(list);//你这个是怎么初始化的,必须对每个引用new 一个HighScore,不然会报错
- 2楼网友:山鬼偶尔也合群
- 2021-02-17 10:47
HighScore[] list = new HighScore[5];
数组李每个对象都要初始化
for(int i = 0; i < list.length; i++)
list[i] = new new HighScore();
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯