Java 接受用户输入的方法
大家好我的名字是Fyree,我在学校作业中遇到问题,我需要创建一个方法,从用户那里获取值,然后通过Java 接受用户输入的方法,java,math,methods,action,bluej,Java,Math,Methods,Action,Bluej,大家好我的名字是Fyree,我在学校作业中遇到问题,我需要创建一个方法,从用户那里获取值,然后通过computeRate()方法打印出一行,显示计算的速率。由于程序将用户输入值作为字符串,我无法在计算速率公式中使用它,因为它们不是整数 我的问题是能够将字符串转换为整数,并且让computeRate()能够正确地获取用户输入的六个值中的两个(intev5/inbv部分…)。其余的值只用于柱状图,我需要在这之后制作柱状图,这是另一个问题的问题。出于某种原因,它无法找到上面列出的这两个变量,即使在它能
computeRate()
方法打印出一行,显示计算的速率。由于程序将用户输入值作为字符串,我无法在计算速率公式中使用它,因为它们不是整数
我的问题是能够将字符串转换为整数,并且让computeRate()
能够正确地获取用户输入的六个值中的两个(intev5/inbv部分…)。其余的值只用于柱状图,我需要在这之后制作柱状图,这是另一个问题的问题。出于某种原因,它无法找到上面列出的这两个变量,即使在它能够找到用户输入值的字符串版本之前(但当然无法正确计算速率,因为它们不是整数)。这是我的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Rate_Graph extends JApplet implements ActionListener
{
JLabel bv, ev1, ev2, ev3, ev4, ev5;
JTextField bv1, ev_1, ev_2, ev_3, ev_4, ev_5;
JButton go, add1, add2, add3, add4, add5;
public void init()
{
setLayout(new FlowLayout());
bv = new JLabel("Enter beginning value:");
bv1 = new JTextField(5);
ev1 = new JLabel("Enter year 1 value:");
ev_1 = new JTextField(5);
ev2 = new JLabel("Enter year 2 value:");
ev_2 = new JTextField(5);
ev3 = new JLabel("Enter year 3 value:");
ev_3 = new JTextField(5);
ev4 = new JLabel("Enter year 4 value:");
ev_4 = new JTextField(5);
ev5 = new JLabel("Enter year 5 value:");
ev_5 = new JTextField(5);
int intbv = Integer.parseInt(bv1.getText());
int intev1 = Integer.parseInt(ev_1.getText());
int intev2 = Integer.parseInt(ev_2.getText());
int intev3 = Integer.parseInt(ev_3.getText());
int intev4 = Integer.parseInt(ev_4.getText());
int intev5 = Integer.parseInt(ev_5.getText());
go = new JButton("Add!");
go.addActionListener(this);
add(bv); add(bv1);
add(ev1); add(ev_1);
add(ev2); add(ev_2);
add(ev3); add(ev_3);
add(ev4); add(ev_4);
add(ev5); add(ev_5);
add(go);
}
public void actionPerformed(ActionEvent event)
{
Object src = event.getSource();
if(src==go){
String strbv = bv1.getText();
String strev1 = ev_1.getText();
String strev2 = ev_2.getText();
String strev3 = ev_3.getText();
String strev4 = ev_4.getText();
String strev5 = ev_5.getText();
}
}
public double computeRate()
{
double rate = (Math.pow(intev5 / intbv, 1.0 / 5.0) - 1);
return rate;
System.out.println(rate);
}
}
任何帮助都将不胜感激。当您在代码块或方法中声明变量时,则该变量在该代码块中仅可见 例如
intbv
仅在init
同样地
if(src==go){
String strbv = bv1.getText();
strbv
in仅在此if
语句中可见
如果您需要在其他方法中使用变量,则将其设置为字段(类变量),就像您对JLabel
和其他J*
变量所做的那样
注意
正如其他人所提到的,将代码放在return语句之后会导致错误。在return语句之后有
System.out.println(rate)
。。。这是一个无法访问的语句,因此必须将其删除或放在返回之前
intev5
和inbv
不可见,因为它们是在init()
方法内声明的,因此它们仅在该方法的范围内可见
如果要在computeRate()
中使用这些变量,一种方法是在init()
之外声明它们:
系统输出打印项次(费率);返回后无效,无法工作,因为int转换仍在范围内。在范围外声明它们时,我遇到了一个新问题:。哦,看来我是在胡说八道。了解声明和作业之间的区别。你能在这方面帮助我吗?这是我在这项作业中最不需要帮助的事情?
if(src==go){
String strbv = bv1.getText();
JLabel bv, ev1, ev2, ev3, ev4, ev5;
JTextField bv1, ev_1, ev_2, ev_3, ev_4, ev_5;
JButton go, add1, add2, add3, add4, add5;
int intbv, intev1, intev2, intev3, intev4, intev5; //Declare outside of init()
public void init()
{
...
intbv = Integer.parseInt(bv1.getText());
intev1 = Integer.parseInt(ev_1.getText());
intev2 = Integer.parseInt(ev_2.getText());
intev3 = Integer.parseInt(ev_3.getText());
intev4 = Integer.parseInt(ev_4.getText());
intev5 = Integer.parseInt(ev_5.getText());
...
}
Try this ..It can help you;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Rate_Graph extends JApplet implements ActionListener
{
JLabel bv, ev1, ev2, ev3, ev4, ev5;
JTextField bv1, ev_1, ev_2, ev_3, ev_4, ev_5;
JButton go, add1, add2, add3, add4, add5;
int intbv, intev1,intev2, intev3, intev4, intev5;
@Override
public void init()
{
setLayout(new FlowLayout());
bv = new JLabel("Enter beginning value:");
bv1 = new JTextField(5);
bv1.setText("5");
ev1 = new JLabel("Enter year 1 value:");
ev_1 = new JTextField(5);
ev_1.setText("5");
ev2 = new JLabel("Enter year 2 value:");
ev_2 = new JTextField(5);
ev_2.setText("5");
ev3 = new JLabel("Enter year 3 value:");
ev_3 = new JTextField(5);
ev_3.setText("5");
ev4 = new JLabel("Enter year 4 value:");
ev_4 = new JTextField(5);
ev_4.setText("5");
ev5 = new JLabel("Enter year 5 value:");
ev_5 = new JTextField(5);
ev_5.setText("5");
intbv = Integer.parseInt(bv1.getText());
intev1 = Integer.parseInt(ev_1.getText());
intev2 = Integer.parseInt(ev_2.getText());
intev3 = Integer.parseInt(ev_3.getText());
intev4 = Integer.parseInt(ev_4.getText());
intev5 = Integer.parseInt(ev_5.getText());
go = new JButton("Add!");
go.addActionListener(this);
add(bv); add(bv1);
add(ev1); add(ev_1);
add(ev2); add(ev_2);
add(ev3); add(ev_3);
add(ev4); add(ev_4);
add(ev5); add(ev_5);
add(go);
}
public void actionPerformed(ActionEvent event)
{
Object src = event.getSource();
if(src==go){
String strbv = bv1.getText();
String strev1 = ev_1.getText();
String strev2 = ev_2.getText();
String strev3 = ev_3.getText();
String strev4 = ev_4.getText();
String strev5 = ev_5.getText();
}
}
public double computeRate()
{
double rate = (Math.pow(intev5 / intbv, 1.0 / 5.0) - 1);
return rate;
}
}