java 求大神看看哪里错了

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
public class RateanLoan extends JFrame
{
JButton Rate=new JButton("汇率计算器");
JButton Loan=new JButton("贷款计算器");
JButton transform;
JLabel rmb;
JLabel dl;
JTextField account;
JTextField RTD;
double RMB,DL;
double x,y;

public RateanLoan()
{

    super("贷款及汇率换算程序");
    setSize(600,500);
    setVisible(true);
    setLayout(new FlowLayout());

    add(Rate,"打开汇率计算器");
    add(Loan,"打开贷款计算器");
    Rate.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {

        JFrame Rateframe=new JFrame("汇率计算器");
        Rateframe.setLocation(100,50);
        Rateframe.setSize(500,500);
        Rateframe.setVisible(true);
        Rateframe.setLocation(100,50);
        Rateframe.setSize(500,500);
        Rateframe.setVisible(true);
        Button transform=new Button("转换");
        Label rmb=new Label("人民币");
        Label dl=new Label("美元");
        TextField account=new TextField(20);
        TextField RTD=new TextField(20);
        Rateframe.setLayout(new FlowLayout(FlowLayout.LEET));
        Rateframe.add(rmb);
        Rateframe.add(account);
        Rateframe.add(dl);
        Rateframe.add(RTD);
        Rateframe.add(transform);
        Rateframe.pack();
        transform.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e)
    {
        if(account.getText()!=null)
        {
            try
            {
                x=Double.parseDouble(account.getText());
                RMB=x/6.6;
                RTD.setText(""+RMB);
            }
            catch(NumberFormatException ex)
            {
                account.setText("");
            }
        }
        if(account.getText().equals("")==true)
        {
            y=Double.parseDouble(RTD.getText());
            DL=y*6.6;
            account.setText(""+DL);
        }

    }
        });


    }//非法的表达式开始
    });

public static void main(String[] args)

{
new RateanLoan();
}

}
图片说明

9个回答

花括号不匹配。如果你真的有兴致想把你的代码写对,起码先把缩进调整下,这样很容易就发现哪里多了一个花括号。

如果你就是为了交一个作业,我也给你现成的程序了。真不知道你反复提问花钱是为了什么。

qq_41541455
qq_41541455 kanbudong
一年多之前 回复
dabocaiqq
请你们大家多多姿瓷我菠菜菌 +1
一年多之前 回复

朋友,刚学编程吧,给你一个小小建议,别着急看结果,先把代码格式规范化,养成写代码好习惯,才能事半功倍!

qq_38280197
qq_38280197 好的,谢谢你的建议
一年多之前 回复
dabocaiqq
请你们大家多多姿瓷我菠菜菌 没错
一年多之前 回复

你的代码明显是嵌套多了,“{}”“()”不匹配了,规范一下代码编写,你可以用折叠代码的方式,看看“{}”是否匹配,希望能帮到你!

qq_38280197
qq_38280197 谢谢了
一年多之前 回复

代码明显嵌套多,“{}”“()”不匹配,规范一下代码编写,你可以用折叠代码的方式,看看“{}”是否匹配

图片说明
效果如上

说明一下你的问题:
1.首先你的逻辑没问题,其实就是细节问题,在下面贴出的代码中有注释,比如某个拼写错误及符号缺省了等。
2.还有就是变量的作用域,你这里有个TextField account,RTD作用域是不够的,当前的修改是将变量设为final类型的
或者你可以将其设为全局变量static 静态修饰等。
3.这里你只是实现了汇率计算器是吧,另一个我看你也没addActionListener,所以没实现。这个你也能实现,自己做一下吧,有问题可以沟通

代码如下:

 package so_FSSC;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
public class RateanLoan extends JFrame 
{
    JButton Rate=new JButton("汇率计算器");
    JButton Loan=new JButton("贷款计算器");
    JButton transform;
    JLabel rmb;
    JLabel dl;
    JTextField account;
    JTextField RTD;
    double RMB,DL;
    double x,y;

    public RateanLoan()
    {
        super("贷款及汇率换算程序");
        setSize(600,500);
        setVisible(true);
        setLayout(new FlowLayout());

        add(Rate,"打开汇率计算器");
        add(Loan,"打开贷款计算器");
        Rate.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

                JFrame Rateframe=new JFrame("汇率计算器");
                Rateframe.setLocation(100,50);
                Rateframe.setSize(500,500);
                Rateframe.setVisible(true);
                Rateframe.setLocation(100,50);
                Rateframe.setSize(500,500);
                Rateframe.setVisible(true);
                Button transform=new Button("转换");
                Label rmb=new Label("人民币");
                Label dl=new Label("美元");
                final TextField account=new TextField(20);//变量问题,这里将其用final修饰
                final TextField RTD=new TextField(20);
                Rateframe.setLayout(new FlowLayout(FlowLayout.LEFT));//LEFT你拼写错了
                Rateframe.add(rmb);
                Rateframe.add(account);
                Rateframe.add(dl);
                Rateframe.add(RTD);
                Rateframe.add(transform);
                Rateframe.pack();
                transform.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e)
                    {
                        if(account.getText()!=null)
                        {
                            try
                            {
                                x=Double.parseDouble(account.getText());
                                RMB=x/6.6;
                                RTD.setText(""+RMB);
                            }
                            catch(NumberFormatException ex)
                            {
                                account.setText("");
                            }
                        }
                        if(account.getText().equals("")==true)
                        {
                            y=Double.parseDouble(RTD.getText());
                            DL=y*6.6;
                            account.setText(""+DL);
                        }

                    }
                });

            }//非法的表达式开始
        });
    }//这里少了一个括号
    public static void main(String[] args)
    {
        new RateanLoan();
    }

}



qq_38280197
qq_38280197 回复niaonao: 好的
一年多之前 回复
niaonao
niaonao 回复qq_38280197: 因为这个变量本身就是actionPerformed中的局部变量,在内嵌的方法中使用该变量访问不到,会报错:不能指在封闭范围内定义的非最终局部变量;所以用final关键字修饰。你可以再去多了解一下final关键字的三大作用
一年多之前 回复
qq_38280197
qq_38280197 想问一下 final TextField account=new TextField(20);//变量问题,这里将其用final修饰 为什么要加个final?
一年多之前 回复
niaonao
niaonao 没事
一年多之前 回复
qq_38280197
qq_38280197 好的,非常感谢。
一年多之前 回复

92行 98行

92行上面多了");"

92行 98行 这里有错误

92行有错误,再看看

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!