2022年数独计算器源码(java语言 .pdf
/* 这是本人最近做的一个数独计算器程序。1.该程序由java 编写。2.该程序具有界面3.把以下代码复制到记事本上保存为java 文件。4.javac Test8.java ,然后再java Test8,你懂的。5.再图形中输入已知的数字,点击确定,图形中就会出现解。*/ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Iterator; import java.util.TreeSet; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; class Myframe extends JFrame public static Object obj=new Object(); public final static JTextField filed=new JTextField99; public Myframe() for(int a=0;a9;a+) for(int b=0;b-1;a-) for(int b=0;b9;b+) jpan.add(filedba); add(jpan,BorderLayout.CENTER); JPanel jpb=new JPanel(); JButton button=new JButton( 确定 ); jpb.add(button); button.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) synchronized (obj) for(int a=0;a9;a+) for(int b3=0;b39;b3+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - int pp=0; if(!(filedab3.getText().trim().equals() pp=Integer.parseInt(filedab3.getText().trim(); Jieda.bab3=pp; synchronized (obj) new Thread(new Jieda().start(); ); add(jpb,BorderLayout.SOUTH); public class Test8 public static void main(String args) Myframe myf=new Myframe(); myf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myf.setTitle( 数独 ); myf.setSize(500,500); myf.setVisible(true); class Jieda implements Runnable public static boolean boo=new boolean99; public static int shanghang=0; public static int shanglie=0; public static int b=new int99; public static void Huigui(boolean boo1,int hang,int lie) int s=lie*9+hang; s-; int shang=s/9; int yushu=s%9; if(boo1yushushang) Huigui(boo1,yushu,shang); else shanghang=yushu; shanglie=shang; public static void arrayAdd(ArrayList array,TreeSet tree) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - for(int z=1;z10;z+) boolean flag3=true; Iterator it=tree.iterator(); while(it.hasNext()/10 int b=it.next().intValue(); if(z=b) flag3=false; break; if(flag3) array.add(new Integer(z); flag3=true; public static ArrayList Maybe(int hang,int lie) ArrayList array=new ArrayList(); TreeSet tree=new TreeSet(); if(0=hang&hang=2&0=lie&lie=2) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=0;a23;a2+) for(int b4=0;b43;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(0=hang&hang=2&3=lie&lie=5) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=0;a23;a2+) for(int b4=3;b46;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(0=hang&hang=2&6=lie&lie=8) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=0;a23;a2+) for(int b4=6;b49;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(3=hang&hang=5&0=lie&lie=2) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - for(int a2=3;a26;a2+) for(int b4=0;b43;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(3=hang&hang=5&3=lie&lie=5) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=3;a26;a2+) for(int b4=3;b46;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(3=hang&hang=5&6=lie&lie=8) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=3;a26;a2+) for(int b4=6;b49;b4+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(6=hang&hang=8&0=lie&lie=2) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=6;a29;a2+) for(int b4=0;b43;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); else if(6=hang&hang=8&3=lie&lie=5) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=6;a29;a2+) for(int b4=3;b46;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - arrayAdd(array,tree); else if(6=hang&hang=8&6=lie&lie=8) for(int a=0;a9;a+) if(a!=lie&bhanga!=0) tree.add(new Integer(bhanga); for(int b1=0;b19;b1+) if(b1!=hang&bb1lie!=0) tree.add(new Integer(bb1lie); for(int a2=6;a29;a2+) for(int b4=6;b49;b4+) if(!(a2=hang&b4=lie)&ba2b4!=0) tree.add(new Integer(ba2b4); arrayAdd(array,tree); return array; public void run() for(int a=0;a9;a+) for(int b1=0;b19;b1+) if(bab1!=0) booab1=true; else booab1=false; boolean flag=true; ArrayList yinyong=new ArrayList99; int hang=0; int lie=0; while(lie9) if(flag=true) hang=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - while(hang9) if(bhanglie=0) if(flag) ArrayList list=Maybe(hang,lie); yinyonghanglie=list; if(yinyonghanglie.isEmpty() Huigui(boo,hang,lie); hang=shanghang; lie=shanglie; bhanglie=0; lie-; flag=false; break; /if(list.isEmpty() else bhanglie=yinyonghanglie.get(0); yinyonghanglie.remove(0); flag=true; boolean r=true; for(int a1=0;a19;a1+) for(int b1=0;b19;b1+) if(r=false) break; if(ba1b1=0) r=false; if(r) for(int a1=0;a19;a1+) for(int b1=0;b19;b1+) System.out.print(b+a1+b1+ba1b1+,); Myframe.fileda1b1.setText(ba1b1+); /if(inthanglie=0) elseflag=true; hang+; lie+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -