如何在java中读写私有字段
我想写/读一个私有变量。。。 请查看我的代码:如何在java中读写私有字段,java,variables,static,Java,Variables,Static,我想写/读一个私有变量。。。 请查看我的代码: public class Date { Date time = new Date(); private int year,month,day ; public static void main(String[] args) { System.out.println("My text :"); Scanner myScanner = new Scanner(System.in); int ye
public class Date {
Date time = new Date();
private int year,month,day ;
public static void main(String[] args) {
System.out.println("My text :");
Scanner myScanner = new Scanner(System.in);
int year,month,day ;
String error = "My text " ;
String monthName = null ;
System.out.println("Year :") ;
year = myScanner.nextInt();
setYear(year) ;
System.out.println("Month :") ;
month = myScanner.nextInt();
setMonth(month) ;
System.out.println("Day :") ;
day = myScanner.nextInt();
setDay(day) ;
switch(month) {
case 1 :
monthName = "Name of this month in my language" ;
break ;
case 2 :
monthName = "Name of this month in my language" ;
break ;
case 3 :
monthName = "Name of this month in my language" ;
break ;
case 4 :
monthName = "Name of this month in my language" ;
break ;
case 5 :
monthName = "Name of this month in my language" ;
break ;
case 6 :
monthName = "Name of this month in my language" ;
break ;
case 7 :
monthName = "Name of this month in my language" ;
break ;
case 8 :
monthName = "Name of this month in my language" ;
break ;
case 9 :
monthName = "Name of this month in my language" ;
break ;
case 10 :
monthName = "Name of this month in my language" ;
break ;
case 11 :
monthName = "Name of this month in my language" ;
break ;
case 12 :
monthName = "Name of this month in my language" ;
break ;
default : System.out.println("Error !") ;
}
if(day >= 1 && day <=31){
JOptionPane.showMessageDialog(null ,getYear() + " " + monthName + " " + getDay()) ;
}
else {
System.out.println(error);
}
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
}
公开课日期{
日期时间=新日期();
私人整数年、月、日;
公共静态void main(字符串[]args){
System.out.println(“我的文本:”);
Scanner myScanner=新扫描仪(System.in);
整数年、月、日;
字符串错误=“我的文本”;
字符串monthName=null;
系统输出打印项次(“年:”;
year=myScanner.nextInt();
设定年份(年);
System.out.println(“月:”);
month=myScanner.nextInt();
设定月(月);
System.out.println(“日:”);
day=myScanner.nextInt();
设定日(天);;
开关(月){
案例1:
monthName=“我的语言中的本月名称”;
打破
案例2:
monthName=“我的语言中的本月名称”;
打破
案例3:
monthName=“我的语言中的本月名称”;
打破
案例4:
monthName=“我的语言中的本月名称”;
打破
案例5:
monthName=“我的语言中的本月名称”;
打破
案例6:
monthName=“我的语言中的本月名称”;
打破
案例7:
monthName=“我的语言中的本月名称”;
打破
案例8:
monthName=“我的语言中的本月名称”;
打破
案例9:
monthName=“我的语言中的本月名称”;
打破
案例10:
monthName=“我的语言中的本月名称”;
打破
案例11:
monthName=“我的语言中的本月名称”;
打破
案例12:
monthName=“我的语言中的本月名称”;
打破
默认值:System.out.println(“错误!”);
}
如果(day>=1&&day首先,您应该避免在Date
类中混合您的main方法。您可以使用main
创建另一个类,如下所示(以测试运行代码):
一旦这样做了,您就可以轻松地处理类中的变量
我不确定你们学校是否希望你们将班级命名为Date。如果我是你们,我会尝试将其命名为不同的名称,比如MyDate
,而不是Date
,因为Java中已经有一个Date班
我收到一个错误(“从类型日期起无法对非静态方法setYear(int)进行静态引用”,我无法修复它。您能帮助我吗
您需要了解什么是静态
成员。这会给您带来错误,因为您试图从属于静态方法的main
访问非静态成员
两种停止错误的方法:
Date d = new Date(); //Create an object of Date
d.getDay();
d.setDay(5);
d.getMonth();
d.setMonth(7);
d.getYear();
d.setYear(2015);
将类中的变量设置为静态(强烈反对您这样做)
创建Date实例并从Date对象访问实例变量。(这是您应该做的)
示例:
Date d = new Date(); //Create an object of Date
d.getDay();
d.setDay(5);
d.getMonth();
d.setMonth(7);
d.getYear();
d.setYear(2015);
现在,您可以通过它的实例轻松访问所有日期的成员
示例:
Date d = new Date(); //Create an object of Date
d.getDay();
d.setDay(5);
d.getMonth();
d.setMonth(7);
d.getYear();
d.setYear(2015);
现在可以在main方法中编写这些代码
如何在java中读写私有字段
通过创建一个对象并像上面那样使用getter和setter。每当您遇到错误“无法对非静态blah进行静态引用”,这意味着您需要创建一个类的实例并使用该实例访问blah。class Date{Date time=new Date();…}
no,no,no。两个主要错误。(1)永远不要使用JVM使用的类名的名称,(2)这个小片段是StackOverflow错误的最佳配方,因为您的每个Date
实例都希望创建自己的Date
实例,它也希望创建自己的Date
实例,…是的,正如Pshemo所说,如果您真的想拥有一个类的实例,而不是那个类,请将其设置为静态的static ClassName instanceName=new ClassName();
static
关键字确保始终存在一个,而不是更多或更少。您的问题与访问修饰符(如private
)无关。您的main()
方法属于整个类,无法访问非静态字段。