Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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 小程序未将变量从init方法传递到paint方法_Java_Variables_Applet_Scope_Init - Fatal编程技术网

Java 小程序未将变量从init方法传递到paint方法

Java 小程序未将变量从init方法传递到paint方法,java,variables,applet,scope,init,Java,Variables,Applet,Scope,Init,这是我班上的一个小程序。 为什么我的最终g.drawString打印的所有变量都是0 import javax.swing.*; import java.awt.*; public class Days extends JApplet { private int month; private int day; private int year_string, private int total_days; private int month_days; public final

这是我班上的一个小程序。 为什么我的最终g.drawString打印的所有变量都是0

import javax.swing.*;
import java.awt.*;

public class Days extends JApplet
{
private int month;

private int  day; 

private int  year_string,

private int total_days;

private int month_days;

public final int minMonth = 1; 

public final int maxMonth = 12; 

public final int minDay = 1; 

public final int maxDay = 31; 

public final int minYear = 1000; 

public final int maxYear = 2999;

public void init()
  {
    String month_string,
           day_string,
           year_string;

    month_string = JOptionPane.showInputDialog("Enter the month (" + minMonth +
                                               "-" + maxMonth + ")");
    day_string   = JOptionPane.showInputDialog("Enter the day (" + minDay +
                                               "-" + maxDay + ")");
    year_string  = JOptionPane.showInputDialog("Enter the year (" + minYear +
                                               "-" + maxYear + ")");
     int month = Integer.parseInt( month_string );
     int day = Integer.parseInt( day_string );
     int year = Integer.parseInt( year_string );



    switch (month){
      case 1: 
              month_days = 0;
                 break;
      case 2: 
              month_days = 31;
                 break;
      case 3: 
              month_days = 59;
                 break;
      case 4: ;
              month_days = 90;
                 break;
      case 5: 
              month_days = 120;
                 break;
      case 6: 
              month_days = 151;
                 break;
      case 7: 
              month_days = 181;
                 break;
      case 8: 
              month_days = 212;
                 break;
      case 9: 
              month_days = 243;
                 break;
      case 10: 
              month_days = 273;
                 break;
      case 11:
               month_days = 304;
                  break;
      case 12: 
               month_days = 334;
                  break;        

        }

     int total_days = month_days + day;
  }

  public void paint(Graphics g)
  {


     g.drawString("The number of days from the beginning of " + year_string + " to " + month + "/" + day + "/" + year_string +
                  "= " + total_days, 40, 30);

    showStatus("Alex Collins");
  }

}

此处未编译发布的源代码。当编译错误被修复时,问题似乎是变量被声明为类属性,以及方法的局部属性。本地声明的属性“隐藏”了我们需要的另一个属性,但在声明该属性的方法末尾消失(超出范围)

请注意:

  • 小程序比(基于帧的)应用程序更难开发和调试
  • 应用程序比命令行应用程序更难编写代码
  • 变量范围是Java101,应该在命令行应用程序中进行分类
  • 以下是小程序的工作版本

    import javax.swing.*;
    import java.awt.*;
    
    public class Days extends JApplet
    {
    private int month;
    private int  day;
    private String  year_string;
    private String  month_string;
    private String  day_string;
    private int total_days;
    private int month_days;
    public final int minMonth = 1;
    public final int maxMonth = 12;
    public final int minDay = 1;
    public final int maxDay = 31;
    public final int minYear = 1000;
    public final int maxYear = 2999;
    
    public void init()
      {
        month_string = JOptionPane.showInputDialog("Enter the month (" + minMonth +
                                                   "-" + maxMonth + ")");
        day_string   = JOptionPane.showInputDialog("Enter the day (" + minDay +
                                                   "-" + maxDay + ")");
        year_string  = JOptionPane.showInputDialog("Enter the year (" + minYear +
                                                   "-" + maxYear + ")");
         int month = Integer.parseInt( month_string );
         int day = Integer.parseInt( day_string );
         int year = Integer.parseInt( year_string );
    
    
    
        switch (month){
          case 1:
                  month_days = 0;
                     break;
          case 2:
                  month_days = 31;
                     break;
          case 3:
                  month_days = 59;
                     break;
          case 4: ;
                  month_days = 90;
                     break;
          case 5:
                  month_days = 120;
                     break;
          case 6:
                  month_days = 151;
                     break;
          case 7:
                  month_days = 181;
                     break;
          case 8:
                  month_days = 212;
                     break;
          case 9:
                  month_days = 243;
                     break;
          case 10:
                  month_days = 273;
                     break;
          case 11:
                   month_days = 304;
                      break;
          case 12:
                   month_days = 334;
                      break;
    
            }
         total_days = month_days + day;
      }
    
      public void paint(Graphics g)
      {
         g.drawString("The number of days from the beginning of " + year_string + " to " + month + "/" + day + "/" + year_string +
                      "= " + total_days, 10, 30);
        showStatus("Alex Collins");
      }
    }
    

    我怎样才能解决这个问题,我有请帮助你需要通过一个基本的Java教程,请谷歌一个。请参阅我们的常见问题。这意味着您在方法init和类中拥有相同的变量。因此,方法中的var隐藏了该类,因此它不会更改它,除非您使用“this”。在您的情况下,只需删除init中的var偏差。