Java JFrame

登录注册:

import java.awt.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
//去掉默认布局管理器:JFrame jf = new JFrame("窗口");jf.setLayout(null);
public class Test extends JFrame implements ActionListener {


public Test() throws HeadlessException {
JFrame jf = new JFrame("窗口");
JPanel j1 = new JPanel(new GridLayout(2, 2));
JLabel jl1 = new JLabel("             用户账号");
JLabel jl2 = new JLabel("             用户密码");
JTextField jf1 = new JTextField(10);
JPasswordField jp = new JPasswordField(10);
j1.add(jl1);
j1.add(jf1);
j1.add(jl2);
j1.add(jp);
JLabel jl3 = new JLabel(new ImageIcon("E:/a.jpg"));
jf.add(jl3, BorderLayout.NORTH);
jf.add(j1, BorderLayout.CENTER);
jf.setSize(500, 500);
jf.setResizable(false);
JButton jb = new JButton("提交");
JButton jb2 = new JButton("注册");
JPanel jp2 = new JPanel();
jp2.add(jb);
jp2.add(jb2);
jf.add(jp2, BorderLayout.SOUTH);


Toolkit tk = Toolkit.getDefaultToolkit();
int swidth = tk.getScreenSize().width;
int sheight = tk.getScreenSize().height;
jf.setLocation((swidth - 500) / 2, (sheight - 500) / 2);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jf.pack();
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
String text = jf1.getText();
String password = new String(jp.getPassword());
int confirmDialog = JOptionPane.showConfirmDialog(Test.this, "是否确认登陆");
if (confirmDialog == JOptionPane.YES_OPTION) {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream("E:/新建文本文档.txt")));
String string = null;
while ((string = br.readLine()) != null) {
String[] split = string.split(",");
if (split[0].equals(text) && split[1].equals(password)) {
JOptionPane.showMessageDialog(Test.this, "登陆成功");
}
}
JOptionPane.showMessageDialog(Test.this, "请先注册");
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e1) {
e1.printStackTrace();

}

finally {
try {
if(br!=null)
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}

}
                    
}


}
});
jb2.addActionListener(new ActionListener() {


@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
String text = jf1.getText();
String password = new String(jp.getPassword());
int confirmDialog = JOptionPane.showConfirmDialog(Test.this, "是否确认注册");
if (confirmDialog == JOptionPane.YES_OPTION) {
BufferedReader br = null;
BufferedWriter bw = null;
String s = text + "," + password;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream("E:/新建文本文档.txt")));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:/新建文本文档.txt")));
String string = null;
while ((string = br.readLine()) != null) {
String[] split = string.split(",");
if (split[0].equals(text) && split[1].equals(password)) {
JOptionPane.showMessageDialog(Test.this, "已经存在,注册失败");
}
}
bw.write(s+"\r\n");
bw.flush();
JOptionPane.showMessageDialog(Test.this, "注册成功");
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
if (bw != null)
bw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
});
}


public static void main(String[] args) {
Test test = new Test();


}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}


}



计算器:

import java.awt.BorderLayout;  
import java.awt.Color;  
import java.awt.GridLayout;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;    
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.JTextField;  
public class Test extends JFrame implements ActionListener {  
    private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",  


            "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };  


  
    private final String[] COMMAND = { "Backspace", "CE", "C" };  
    private JButton keys[] = new JButton[KEYS.length];  
    private JButton commands[] = new JButton[COMMAND.length];  
    private JTextField resultText = new JTextField("0");  
    private boolean firstDigit = true;  
    private double resultNum = 0.0;  
    private String operator = "=";  
    private boolean operateValidFlag = true;  
    public Test() {  
        super();  
        init();  
        this.setBackground(Color.LIGHT_GRAY);  


        this.setTitle("计算器");  
        this.setLocation(500, 300);  
        this.setResizable(false);  
        this.pack();  
    }  
    private void init() {  
        resultText.setHorizontalAlignment(JTextField.RIGHT);  
        resultText.setEditable(false);  
        resultText.setBackground(Color.white);  
        JPanel calckeysPanel = new JPanel();  
        calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));  
        for (int i = 0; i < KEYS.length; i++) {  
            keys[i] = new JButton(KEYS[i]);  
            calckeysPanel.add(keys[i]);  
            keys[i].setForeground(Color.blue);  


        }  
        keys[3].setForeground(Color.red);  
        keys[8].setForeground(Color.red);  
        keys[13].setForeground(Color.red);  
        keys[18].setForeground(Color.red);  
        keys[19].setForeground(Color.red);  
        JPanel commandsPanel = new JPanel();  
        commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));  
        for (int i = 0; i < COMMAND.length; i++) {  
            commands[i] = new JButton(COMMAND[i]);  
            commandsPanel.add(commands[i]);  
            commands[i].setForeground(Color.red);  
        }  
        JPanel calmsPanel = new JPanel();  
        calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));  
        JPanel panel1 = new JPanel();  
        panel1.setLayout(new BorderLayout(3, 3));  
        panel1.add("North", commandsPanel);  
        panel1.add("Center", calckeysPanel);  
        JPanel top = new JPanel();  
        top.setLayout(new BorderLayout());  
        top.add("Center", resultText);  
        getContentPane().setLayout(new BorderLayout(5, 3));  
        getContentPane().add("North", top);  
        getContentPane().add("Center", panel1);  
        getContentPane().add("West", calmsPanel);  
        for (int i = 0; i < KEYS.length; i++) {  
            keys[i].addActionListener(this);  
        }  
            for (int i = 0; i < COMMAND.length; i++) {  
            commands[i].addActionListener(this);  
        }  
    }
    public void actionPerformed(ActionEvent e) {  
        String label = e.getActionCommand();  
        if (label.equals(COMMAND[0])) {  
            handleBackspace();  
        } else if (label.equals(COMMAND[1])) {  
            resultText.setText("0");  
        } else if (label.equals(COMMAND[2])) {  
            handleC();  
        } else if ("0123456789.".indexOf(label) >= 0) {  
            handleNumber(label);          
        } else {  
            handleOperator(label);  
        }  
    }  
    private void handleBackspace() {  
        String text = resultText.getText();  
        int i = text.length();  
        if (i > 0) {  
            text = text.substring(0, i - 1);  
            if (text.length() == 0) {  
                resultText.setText("0");  
                firstDigit = true;  
                operator = "=";  
            } else {  
                resultText.setText(text);  


            }  


        }  


    }  
    private void handleNumber(String key) {  
        if (firstDigit) {  
            resultText.setText(key);  
        } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {  
            resultText.setText(resultText.getText() + ".");  
        } else if (!key.equals(".")) {  
            resultText.setText(resultText.getText() + key);  
        }  
        firstDigit = false;  


    }  
    private void handleC() {  
        resultText.setText("0");  
        firstDigit = true;  
        operator = "=";  
    }  
    private void handleOperator(String key) {  
        if (operator.equals("/")) {  
            if (getNumberFromText() == 0.0) {  
                operateValidFlag = false;  
                resultText.setText("除数不能为零");  
            } else { 
            if(firstDigit){resultNum = getNumberFromText();}
            else{resultNum /= getNumberFromText();}
           
            }  
        } else if (operator.equals("1/x"))
        {      
            if (resultNum == 0.0) {  
                operateValidFlag = false;  
                resultText.setText("零没有倒数");  
            } else {  
                resultNum = 1 / resultNum;  
            }  
        } else if (operator.equals("+")) {
        if(firstDigit){resultNum = getNumberFromText();}
        else{resultNum += getNumberFromText();}


        } else if (operator.equals("-")) {
        if(firstDigit){resultNum = getNumberFromText();}
        else{resultNum -= getNumberFromText();}
              
        } else if (operator.equals("*")) {
        if(firstDigit){  resultNum = getNumberFromText();}
        else{  resultNum *= getNumberFromText();}
            
          
        } else if (operator.equals("sqrt")) {
       
            resultNum = Math.sqrt(resultNum);  
        } else if (operator.equals("%")) 
        {    
            resultNum = resultNum / 100;  
        } else if (operator.equals("+/-")) {  
            resultNum = resultNum * (-1);  
        } else if (operator.equals("=")) {  
            resultNum = getNumberFromText();  
        }  
        if (operateValidFlag) {  
            long t1;  
            double t2;  
            t1 = (long) resultNum;  
            t2 = resultNum - t1;  
            if (t2 == 0) {  
                resultText.setText(String.valueOf(t1));  
            } else {  
                resultText.setText(String.valueOf(resultNum));  
            }  
        }  
        operator = key;  
        firstDigit = true;  
        operateValidFlag = true;  
    }  
    private double getNumberFromText() {  
        double result = 0;  
        try {  
            result = Double.valueOf(resultText.getText()).doubleValue();  
        } catch (NumberFormatException e) {  
        }  
        return result;  
    }  
    public static void main(String args[]) {  
        Test calculator1 = new Test();  
        calculator1.setVisible(true);  
        calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    }  
}


交通地图:

Edge类:

public class Edge {
int bg,end;
int dist;
public Edge(int beginpoint,int endpoint,int dist)
{
bg=beginpoint;
end=endpoint;
this.dist=dist;
}
}

MGraph类:

public class MGraph {
static final int MAXSIZE=5000;
int[] P;//存储最短路径
int[] D;//存储最短距离
Edge[] paths=new Edge[100];
public MGraph(){
vexnum=citysname.length;
P = new int[vexnum];
D = new int[vexnum];
      }
int vexnum;
String[] citysname=new String[]{"张家界市","常德市","岳阳市","吉首市","益阳市","怀化市",
"邵阳市","娄底市","湘潭市","长沙市","株洲市","衡阳市","永州市","郴州市"};
  int[][] edges=new int[][]{
 {0, 157,MAXSIZE,160,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE, 0,183,223,98,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE,183,0,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,195,152,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {160,223,MAXSIZE,0,MAXSIZE,136,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE,98,MAXSIZE,MAXSIZE,0,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,80,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE,MAXSIZE,MAXSIZE,136,MAXSIZE,0,214,317,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,214,0,117,193,MAXSIZE,MAXSIZE,136,124,MAXSIZE},
 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,317,117,0,120,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE,MAXSIZE,195,MAXSIZE,MAXSIZE,MAXSIZE,193,120,0,41,45,MAXSIZE,300,MAXSIZE},
 {MAXSIZE,MAXSIZE,152,MAXSIZE,80,MAXSIZE,MAXSIZE,MAXSIZE,41,0,68,MAXSIZE,MAXSIZE,MAXSIZE},
 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,45,68,0,141,MAXSIZE,MAXSIZE},
 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,136,MAXSIZE,MAXSIZE,MAXSIZE,141,0,142,176},
 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,124,MAXSIZE,300,MAXSIZE,MAXSIZE,176,0,MAXSIZE},
 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,142,MAXSIZE,0}
  };//距离
  int[][]location=new int[][]{
 {180, 40},
 {280, 60},
 {450, 40},
 {110, 110},
 {360, 90},
 {130, 150},
 {260, 170},
 {310, 120},
 {425, 140},
 {440, 120},
 {450, 140},
 {360, 200},
 {260, 240},
 {430, 300}
  };//位置
public void shortpath(int bgcity,int endcity){
//将路径数组置空
//for(int i=0;i<paths.length;i++)paths[i]=null;
/*if(bgcity!=0){//将起点调整为0 
//交换城市名称
String tmp=citysname[0];
citysname[0]=citysname[bgcity];
citysname[bgcity]=tmp;

//交换城市位置
for(int i=0;i<2;i++){
int t=location[0][i];
location[0][i]=location[bgcity][i];
location[bgcity][i]=t;
}
//交换邻接矩阵0行和bgcity
for(int i=0;i<edges.length;i++){
int t=edges[0][i];
edges[0][i]=edges[bgcity][i];
edges[bgcity][i]=t;
}
//交换邻接矩阵0列和bgcity列
for(int i=0;i<edges.length;i++){
int t=edges[i][0];
edges[i][0]=edges[i][bgcity];
edges[i][bgcity]=t;
}
}
//进入计算最短路径
mypath(this);
showPath(endcity);*/
boolean[] flag=new boolean[vexnum];
for(int i=0;i<vexnum;i++){
D[i]=edges[bgcity][i];
P[i]=bgcity;
}
D[bgcity]=0;
flag[bgcity]=true;
P[bgcity]=-1;
int j=0;
for(int i=0;i<vexnum;i++){
int min=MAXSIZE+1;
for(int k=0;k<vexnum;k++){
if(flag[k]==false && D[k]<min){
j=k;
min=D[k];
}
}
flag[j]=true;
for(int k=0;k<vexnum;k++)   //更新dist数组的值和路径的值 
       {
           if(flag[k]==false && min+edges[j][k]< D[k])
           {
               D[k]=min+edges[j][k];
               P[k]=j; 
           }
       }  
}
mypath( bgcity, endcity);
}

  
  private void mypath(int bgcity,int endcity){
 int i,j;
i=endcity;
j=i;
int n=0;
while(P[j]!=-1){
Edge line=new Edge(P[j],j,D[j]);
paths[n++]=line;
j=P[j];
}
  }
 
}


MyCanvas类:

import java.awt.BasicStroke;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

public class MyCanvas extends Canvas {
Edge[] paths;
MGraph G;
public MyCanvas(MGraph G){
this.G=G;//将图引用对象赋值
}
public void paint( Graphics g){
//绘制方框
g.drawRect(20, 20, 560, 360);
//g.setColor(Color.white);
for(int i=0;i<G.citysname.length;i++)
{
for(int j=i+1;j<G.citysname.length;j++)
{
if(G.edges[i][j]<G.MAXSIZE)
{
g.drawLine(G.location[i][0], G.location[i][1], G.location[j][0], G.location[j][1]);
}
}
//g.setColor(Color.blue);
g.drawString(G.citysname[i], G.location[i][0], G.location[i][1]);
g.setColor(Color.blue);
g.fillArc(G.location[i][0]-3, G.location[i][1]-3, 8, 8, 0, 360);
g.setColor(Color.black);
}
//绘制计算的路径
paths=G.paths;
int i=0;
g.setColor(Color.red);
((Graphics2D)g).setStroke(new BasicStroke(3.0f));
int distance=0;
int bc=0,ec=0;
int bg=0,end=0;
while(paths[i]!=null){
//将改边绘制出来
int x1,y1,x2,y2;

bg=paths[i].bg;
end=paths[i].end;
x1=G.location[bg][0];
y1=G.location[bg][1];
x2=G.location[end][0];
y2=G.location[end][1];
g.setColor(Color.red);
g.drawLine(x1, y1, x2, y2);
if(i == 0 ){
ec = end;
}
distance+=G.edges[bg][end];
g.setColor(Color.red);
g.drawLine(x1, y1, x2, y2);
g.setColor(Color.black);
g.drawString(G.edges[bg][end]+"",(x1+x2)/2 , (y1+y2)/2);
i++;


}
bc=bg;
g.setColor(Color.black);
g.drawString(distance + "km", 120, 245);
g.setColor(Color.blue);
g.drawString(G.citysname[bc], 50, 250);
g.drawString(G.citysname[ec], 180, 250);
g.setColor(Color.red);
g.drawLine(102, 250, 178, 250);
}

}


MyFrame类:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class MyFrame extends JFrame implements ActionListener {


JComboBox cb1,cb2;
MGraph G;
MyCanvas mycanvas;
public MyFrame(){
G=new MGraph();//创建图不能再创建了,通过引用完成
this.setTitle("1406405026马昌辉的系统");
this.setSize(600,500);

this.setLocationRelativeTo(null);

setResizable(false);
Container p=this.getContentPane();




JLabel lb1=new JLabel("湖南省高速公路交通图");
JPanel pp=new JPanel();
pp.add(lb1);
p.add(pp,BorderLayout.NORTH);


mycanvas=new MyCanvas(G);//考虑画板也需要图


mycanvas.setBackground(Color.white);

p.add(mycanvas,BorderLayout.CENTER);


String[] citysname=new String[]{"张家界市","常德市","岳阳市","吉首市","益阳市","怀化市",
"邵阳市","娄底市","湘潭市","长沙市","株洲市","衡阳市","永州市","郴州市"};
JPanel pl1;
JButton bt;
cb1=new JComboBox(citysname);
cb1.setMaximumRowCount(5);
cb2=new JComboBox(citysname);
cb2.setMaximumRowCount(5);
bt=new JButton("搜索");
bt.addActionListener(this);
GridBagLayout grdb=new GridBagLayout();
pl1=new JPanel();
pl1.setLayout(grdb);
JLabel lb2= new JLabel("选择起始城市:");
pl1.add(lb2);
pl1.add(cb1);
JLabel lb3=new JLabel("----->");
pl1.add(lb3);
pl1.add(cb2);
pl1.add(bt);
     JPanel Pl2 = new JPanel();
p.add(pl1,BorderLayout.SOUTH);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭选项
}
public static void main(String[] args) {
MyFrame App = new MyFrame();

}
@Override
public void actionPerformed(ActionEvent e) {
// 获得你选择的开始城市和终点城市
int bgcity,endcity;
bgcity=cb1.getSelectedIndex();
endcity=cb2.getSelectedIndex();
if(bgcity==endcity)return ;
//完成路径数组的清空

G.shortpath(bgcity, endcity);

int i=0;
while(G.paths[i]!=null)G.paths[i++]=null;
//计算最短路径
G.shortpath(bgcity, endcity);
//视图需要更新
cb1.repaint();
cb2.repaint();
this.repaint();//仅更新frame
mycanvas.repaint();
}
}



猜诗词:

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


import org.omg.CORBA.PUBLIC_MEMBER;


public class MyFrame extends JFrame implements ActionListener {


static JTextField jField;
static JButton[] b;
JPanel j1;
JPanel jp;
String string = null;


public MyFrame() {
JFrame jf = new JFrame("窗口");
j1 = new JPanel();
jField = new JTextField(20);
JButton jb1 = new JButton("撤销");
JButton jb2 = new JButton("提交");
j1.add(jField);
j1.add(jb1);
j1.add(jb2);
jf.add(j1, BorderLayout.NORTH);
jp = new JPanel();
string = "白日依山尽";
b = new JButton[string.length()];
for (int i = 0; i < string.length(); i++) {
b[i] = new JButton(string.substring(i, i + 1));
b[i].addActionListener(new Myactionlistener());
if (i == string.length() - 1) {
for (int j = 0; j < i; j++) {
Random random = new Random();
int nextInt = random.nextInt(string.length());
int count = 0;
while (count <= b.length) {
for (JButton ll : b) {
while (b[nextInt].getText().equals(ll.getText())) {
nextInt = random.nextInt(string.length());
}
jp.add(b[nextInt]);
count++;
}
}
}
}
}
jf.add(jp, BorderLayout.CENTER);
jf.setSize(500, 500);
jf.setResizable(false);
Toolkit tk = Toolkit.getDefaultToolkit();
int swidth = tk.getScreenSize().width;
int sheight = tk.getScreenSize().height;
jf.setLocation((swidth - 500) / 2, (sheight - 500) / 2);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);


// jf.pack();
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == jb1) {
jField.setText(jField.getText().substring(0, jField.getText().length() - 1));
}
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (jField.getText().equals(string)) {
int confirmDialog = JOptionPane.showConfirmDialog(MyFrame.this, "是否进入下一关");
if (confirmDialog == JOptionPane.YES_OPTION) {
for (int i = 0; i < b.length; i++) {
jp.remove(b[i]);
jp.validate();
}
jf.remove(jp);
jf.validate();
} else {
System.exit(1);
}
} else {
JOptionPane.showMessageDialog(MyFrame.this, "输入错误");
}


}


});


}


@Override
public void actionPerformed(ActionEvent e) {


}


public static void main(String[] args) {
MyFrame m = new MyFrame();


}


}


class Myactionlistener implements ActionListener {


@Override
public void actionPerformed(ActionEvent arg0) {
for (int i = 0; i < MyFrame.b.length; i++) {
if (arg0.getSource() == MyFrame.b[i]) {
String ss = MyFrame.jField.getText() + MyFrame.b[i].getText();
MyFrame.jField.setText(ss);
}
}
}


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值