Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中读写私有字段_Java_Variables_Static - Fatal编程技术网

如何在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()
    方法属于整个类,无法访问非静态字段。