四则运算和随机验证码
四则运算源码
package sizeyunsuan;
import java.util.Random;
public class sizeyunsuan {
static String f()//分数的数字,出现问题,定义这个函数,需要返回值,
{
int i=(int)(Math.random()*10);
int j=(int)(Math.random()*10);
if(i>=j)
{
int temp=i;
i=j;
j=temp;
}
return ("("+i+"/"+j+")");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Random random=new Random();
int k;
String a,b;
sizeyunsuan sizeyusuan=new sizeyunsuan();//不知道啥意思???
for(int i=0;i<30;i++)//30个四则运算
{
/*int number1=0;//两个随机数变量
for(int j=0;j<4;j++)
{
number1+=random.nextInt(10);
}
int number2=0;
for(int j=0;j<4;j++)
{
number2+=random.nextInt(10);
}*/
int number1=(int)(Math.random()*1000);//要把这两个数的定义,放到for循环里,否则会出现数字不变的情况
int number2=(int)(Math.random()*1000);
a=sizeyunsuan.f();
b=sizeyunsuan.f();
switch((int)(Math.random()*4))//switch的选择是四个中的随机
{
case 0:
k=(int)(Math.random()*3);//k需要先定义
if(k==0)
System.out.println(number1+"+"+number2+"=");
else if(k==1)
System.out.println(a+"+"+number1+"=");
else if(k==2)
System.out.println(a+"+"+b+"=");
break;
case 1:
k=(int)(Math.random()*3);
if(number1<number2)
{
int temp=number1;
number1=number2;
number2=temp;
}
if(k==0)
System.out.println(number1+"-"+number2+"=");
else if(k==1)
System.out.println(number1+"-"+a+"=");
else if(k==2)
System.out.println(a+"-"+b+"=");
break;
case 2:
k=(int)(Math.random()*3);
if(k==0)
System.out.println(number1+"*"+number2+"=");
else if(k==1)
System.out.println(number1+"*"+a+"=");
else if(k==2)
System.out.println(a+"*"+b+"=");
break;
case 3:
while(number2==0)
number2= (int)(Math.random()*1000);
System.out.println(number1+"/"+number2+"=");
break;
}
}
}
}
程序运行结果截图
程序设计思想:
设计过程首先是调查小学四则运算具体是什么样的,了解需求后根据需求进行制作,其次我想到需要解决的问题是如何实现每次输出的题目都是任意的,然后需要用选择语句进行加减乘除的运算,另外需要加上一个方法用来实现分数的运算。
实验总结:
1.switch((int)(Math.random()*4))//switch的选择是四个中的随机
2.出现这样的错误,就是虽然加减乘除实现了,但是数字不改变,原因就是
int number1=(int)(Math.random()*1000);
int number2=(int)(Math.random()*1000); //要把这两个数的定义,放到for循环里,否则会出现数字不变的情况
随意验证码源码
package yanzheng;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Yanzheng extends Frame {
public static void main(String[] args) {
Frame f=new Frame("请登录");//赋予f新空间窗口
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
Panel p=new Panel();//赋予p新空间输入框
p.add(new JLabel("登录名"));//输入框名字为登录名
p.add(new TextField(40));
p.add(new JLabel("密码"));
p.add(new TextField(40));//文本长度为20
p.add(new JLabel("验证码"));
p.add(new TextField(30));
f.add(p);//把文本框加入到窗口中
f.setBounds(0,0,400,400);//最后俩分别是宽和高
f.setVisible(true);
String str= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";//含有字符和数字的字符串
Random random=new Random();//随即类初始化
StringBuffer sb=new StringBuffer();//StringBuffer类生成,为了拼接字符串。
for(int i=0;i<4;i++)
{
int number=random.nextInt(62);//[0,62]
sb.append(str.charAt(number));//连接这四个字符
}
String a= sb.toString();
p.add(new JLabel(a));
}
}
程勋运行截图
程序设计思想:
首先需要解决出现一个界面的问题,然后在界面上出现文字和空白输入框,最后要解决出现随机验证码的问题
实验总结:
出现的错误有:解决出先一个窗口后无法关闭,需要有专门的语句来关闭窗口,否则打开一个就多一个窗口。
基本上问题都是百度去找答案的,有很多关于界面的名词都不知道,而且引入的东西很多,需要去记忆。