Java 小程序未将变量从init方法传递到paint方法
这是我班上的一个小程序。 为什么我的最终g.drawString打印的所有变量都是0Java 小程序未将变量从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
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");
}
}
此处未编译发布的源代码。当编译错误被修复时,问题似乎是变量被声明为类属性,以及方法的局部属性。本地声明的属性“隐藏”了我们需要的另一个属性,但在声明该属性的方法末尾消失(超出范围) 请注意:
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偏差。