简明现代魔法 -> Java编程语言 -> SWT之路:吸血鬼数字

SWT之路:吸血鬼数字

2009-11-27

吸血鬼数字就是,它可以用组成自己的数字自由组合成两个乘数,并且这两个成熟的积等于它本身。

运行演示

代码

package SWT;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Vampire {

	protected Shell shell;
	private Text text;
	static int upperLimit;
	static List resultShow;

	/**
	 * Launch the application.
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			Vampire window = new Vampire();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shell = new Shell();
		shell.setSize(450, 400);
		shell.setText("寻找吸血鬼数字");
		{
			Group group = new Group(shell, SWT.NONE);
			group.setText("选项");
			group.setBounds(10, 10, 152, 346);
			{
				text = new Text(group, SWT.BORDER);
				text.setBounds(10, 48, 70, 18);
			}
			{
				Label label = new Label(group, SWT.NONE);
				label.setBounds(10, 30, 96, 12);
				label.setText("吸血鬼数字上限:");
			}
			{
				Button button = new Button(group, SWT.NONE);
				button.setBounds(10, 314, 72, 22);
				button.setText("查询");
				button.addSelectionListener(new SelectionAdapter() {    
                    public void widgetSelected(SelectionEvent e) {    
                    	// 读取输入    
                        upperLimit = Integer.parseInt(text.getText());
                    	
                    	String[] x, y;  
                        int sum = 0;  
                        //双重循环穷举  
                        // 清除之前的List控件内容  
                        resultShow.removeAll();  
                        for(int i = 0;i < 1000; i++){  
                            //j=i+1避免重复  
                            for(int j = i + 1;j < 1000;j++){  
                                int num = i * j;  
                                if(num < 0 || num > upperLimit)
                                    continue;//积小于1000或大于9999排除,继续下一轮环  
                                
                                // 将数字转化为字符串,再将字符串分拆成字符,放入数组
                                x = String.valueOf(num).split("");  
                                y = (String.valueOf(i) + String.valueOf(j)).split("");  
                                // 比较两个数组的元素
                                java.util.Arrays.sort(x);  
                                java.util.Arrays.sort(y);  
                                
                                
                                if(java.util.Arrays.equals(x, y)){//排序后比较,为真则找到一组  
                                    sum++;  
                                    resultShow.add("第" 
                                            + sum + "组: " + i + "*" + j + "=" + num);  
                                }  
                            }  
                        }  
                        System.out.println("共找到"+sum+"组吸血鬼数");    
                    }    
                });   
			}
		}
		{
			Group group = new Group(shell, SWT.NONE);
			group.setText("结果");
			group.setBounds(182, 10, 250, 346);
			{
				resultShow = new List(group, SWT.BORDER);
				resultShow.setBounds(10, 22, 230, 314);
			}
		}

	}
} 
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们