簡體   English   中英

需要用戶輸入的方法

[英]Method that takes user input

大家好,我叫Fyree,我在做學校作業時遇到了問題,我需要創建一個從用戶那里獲取值的方法,然后將其computeRate()方法,以打印出顯示計算結果的行。率。 由於該程序將用戶輸入值作為字符串,因此我無法在計算速率公式中使用該值,因為它們不是整數。

我的問題是能夠將Strings轉換為int,並讓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);
}
}

任何幫助將不勝感激。

當您在代碼塊或方法中聲明變量時,該變量僅在該代碼塊中visible

例如

public void init()
{
...

    int intbv = Integer.parseInt(bv1.getText());

intbv僅在init可見

同樣

if(src==go){
   String strbv = bv1.getText();

僅在此if語句中可見strbv

如果您需要在其他方法中使用變量,請像使用JLabel和其他J*變量一樣將它們設置為字段(類變量)。

注意如前所述,將代碼放在return語句之后將導致錯誤。

return語句后有System.out.println(rate) ...這是一條無法訪問的語句,因此您必須刪除它或將其放在返回之前。

intev5inbv是不可見的,因為它們是在init()方法內部聲明的,因此它們僅在該方法的范圍內可見。

如果要在computeRate()使用這些變量,一種方法是在init()外部聲明它們:

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;

}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM