编写应用程序,对文本进行数字提取、运算和查找

编写一个应用程序,窗口中通过按钮input,弹出一个输入对话框,并在对话框中输入字符串inputText,并对inputText进行处理,要求提取文本中的数字数据,并对数组进行排序之后,输出在文本区域output中,同时显示求和的结果与平均值。通过按钮find,可以弹出一个输入框,可供输入数据num,并实现在数组中查找num,查找的结果用message的对话框显示

编写主类,创建一个带标题的窗口

public class Example9_17 {
   public static void main(String args[]) {
      WindowInput win=new WindowInput();
      win.setTitle("带输入对话框的窗口"); 
      win.setBounds(80,90,200,300);
   }
}

设定南北中的边界布局,插入按钮,通过在按钮中添加监视器来控制输入对话框和查找对话框弹出,通过改变正则表达式来实现对本文的数字提取

import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class WindowInput extends JFrame implements ActionListener {
   JTextArea show;
   JButton input,find;
   double sum=0;
   double n[];
   MyDialog dialog;
   String inputText[];
   WindowInput() {
       input=new JButton("弹出输入对话框");
       find=new JButton("请输入要查找的数据");
       show=new JTextArea();
       add(input,BorderLayout.NORTH);
       add(find,BorderLayout.SOUTH);
       add(new JScrollPane(show),BorderLayout.CENTER);
       input.addActionListener(this); 
       find.addActionListener(this); 
       setVisible(true);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
   public void actionPerformed(ActionEvent e) { 
	 if(e.getSource()==input){ 
    String str=JOptionPane.showInputDialog(this,"请输入数字,用空格隔开","输入对话框",JOptionPane.PLAIN_MESSAGE);      
    String regex="[\\D]+"; 
    inputText=str.split(regex);
   
    for(int i=0;i<inputText.length;i++) {
    	double a=Double.parseDouble(inputText[i]); 
    	if(i==0) {
    		show.append(""+a);
    	}
    	else {
    		show.append("+"+a);
    	}
    	sum=sum+a;
     }
     show.append("="+sum);
	 show.append("\n平均值为:"+sum/inputText.length);
	 n=new double[inputText.length];
	 for(int i=0;i<inputText.length;i++) {
		 n[i] = Double.parseDouble(inputText[i]);
	 }
	 Arrays.sort(n);
     show.append("\n数组排序后是:[");
     for(int i=0;i<inputText.length;i++) {
    	 if(i==0) {
    		 show.append(n[i]+"");
    	 }
    	 else {
    		 show.append(","+" "+n[i]);
    	 }
     }
     show.append("]");
	 }
	 
     if(e.getSource()==find){
	   dialog=new MyDialog(this,"我是对话框");
            }
     }
   }

查找数字并创建自定义对话框

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;

public class MyDialog extends JDialog implements ActionListener{
  WindowInput window;
  JTextField text;
  JLabel label,label2;
  MyDialog(WindowInput m,String s){
	  super(m,s);
	  window=m;
	  text=new JTextField(9);
	  label=new JLabel("请输入要查找的数字");
	  label2=new JLabel();
	  add(label);
	  add(text);
	  add(label2); 
	  text.addActionListener(this);
	  setLayout(new FlowLayout());
	  setVisible(true);
	  setBounds(300,300,200,150);
  }
	  public void actionPerformed(ActionEvent e) {
	        text.getDocument().addDocumentListener(new javax.swing.event.DocumentListener(){
	        	public void changedUpdate(DocumentEvent arg0) {
	     		    Find();
	     	    }
	     	    public void insertUpdate(DocumentEvent arg0) {
	     		    Find();
	     	    }
	     	    public void removeUpdate(DocumentEvent arg0) {
	     		    if(text.getText() == "" || text.getText().equals("")) {
	     			    label2.setText("");
	     		    }
	     		    else {
	     			    Find();
	     	        }
	     	    }
	     	 });
	     }
	 
	     public void Find(){
	    	if(window.inputText!=null) {
	    		boolean p=false;
	    		for(String numStr:window.inputText) {
					 if(numStr.equals(text.getText())) {
						p=true;
					    break;
					 }
					 else {
						p=false;
					 }
				 }
				 if(p) {
					 label2.setText("该数存在数组中");
	            } 
				 else { 
					 label2.setText("该数不存在数组中");
		         }
				 
		     }
	      }

  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值