[实验一]:回文数
程序设计思想:回文数程序比较简单,而且程序的提示比较多。首先用户输入一个数,通过除商取余把各个位上的数字都算出来,然后用判断结构判断各个位上的数字的关系,进一步判断是否构成回文数。
程序流程图:
程序源代码;
import javax.swing.JOptionPane;
public class Number
{
public static void main(String args[])
{
int number=0,d5,d4,d3,d2,d1;
String str=JOptionPane.showInputDialog("输入一个 1 至 99999 之间的数");
number=Integer.parseInt(str);
if(number>=1&&number<=99999) //判断 number 在 1 至 99999 之间的条件
{
d5=number%100000/10000; //计算 number 的最高位(万位)d5
d4=number%10000/1000; //计算 number 的千位 d4
d3=number%1000/100; //计算 number 的百位 d3
d2=number%100/10;
d1=number%10;
if(d5>0) //判断 number 是 5 位数的条件
{
System.out.println(number+"是 5 位数");
if(d1==d5&&d2==d4) //判断 number 是回文数的条件
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(d5==0&&d4>0) //判断 number 是 4 位数的条件
{
System.out.println(number+"是 4 位数");
if(d1==d4&&d2==d3) //判断 number 是回文数的条件码
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(d5==0&&d4==0&&d3>0) //判断 number 是 3 位数的条件
{
System.out.println(number+"是 3 位数");
if(d1==d3) //判断 number 是回文数的条件
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(d2!=0)
{
System.out.println(number+"是 2 位数");
if(d1==d2)
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(d1!=0)
{
System.out.println(number+"是 1 位数");
System.out.println(number+"是回文数");
}
}
else
{
System.out.printf("\n%d 不在 1 至 99999 之间",number);
}
}
}
运行结果截图:
[实验二]:验证程序
Elementary
判断结果:-2072845186
-2072845186
2222122110
2222122110
源程序代码:
public class Elementary {
public static void main(String[] args) {
int i=1234578900+987543210;
System.out.println(i);
long j=1234578900+987543210;
System.out.println(j);
long k=1234578900+987543210L;
System.out.println(k);
long l=1234578900L+987543210L;
System.out.println(l);
}
}
验证截图:
原因分析:整型数据的范围是-2147483648—2147483647,超出此范围会发生数据溢出。而long整型数据,计算时要在数后面加上L,否则会被当做整型数据处理,所以1和2发生数据溢出,3和4正确,其中3中的1234578900倍强制转换为long型。
Elementary2
判断结果:HBird
HBird
A
1
66
A
67
B
1
B1
67
1
1B
源程序代码:
public class Elemenetary2 {
public static void main(String[] args) {
System.out.println("H"+"Bird");
System.out.println('H'+"Bird");
String s="";
char c=65;
int i=1;
System.out.println(c);
System.out.println(i);
System.out.println(c+1);
System.out.println(c++);
System.out.println(c+i);
System.out.println(s+c);
System.out.println(s+i);
System.out.println(s+c+i);
System.out.println(i+c+s);
s=s+i;
System.out.println(s);
s=s+c;
System.out.println(s);
}
}
验证截图:
原因分析:第一个是输出两个字符串H和Bird,第二个是char型H和字符串Bird,第三个是char型的c,第四个是整型的i,第五个是char型和整型数字相加,会发生强行转换,第六个c++,先输出后自加,第七个char型和int型i相加,强行转换为char型,第八个s为空字符串,输出自加后的c,第九个输出1,第十个s+c为B,i是1,输出B1,第十一i在前,强行转换,输出67,第十二s+i,得s=1,第十三s是字符串,所以s和c相加后得1B.
Option
判断结果:dear cj, you are 21 years oid.
源程序代码:
import javax.swing.*;
public class Option
{
public static void main(String[] args)
{
String name=JOptionPane.showInputDialog("what is your name?");
String input=JOptionPane.showInputDialog("how old are you?");
int age=Integer.parseInt(input);
String title="your infomation";
String message="dear "+name+", you are "+age+" years old.";
JOptionPane.showConfirmDialog(null,
message, title,JOptionPane.CLOSED_OPTION);
}
}
验证截图:
原因分析:通过程序输入名字和年龄,再通过视图界面输出结果。
[实验三]:Addition
程序设计思想:通过用户输入的两个数,进行加减乘除算法,再输出计算结果。
程序流程图:
源程序:
// An addition program
import javax.swing.JOptionPane; // import class JOptionPane
public class Addition {
public static void main( String args[] )
{
String firstNumber, // first string entered by user
secondNumber; // second string entered by user
int number1, // first number to add
number2, // second number to add
sum, // sum of number1 and number2
dif, //两数的差
pro, //两数的乘积
quo; //两数的商
// read in first number from user as a string
firstNumber =
JOptionPane.showInputDialog( "Enter first integer" );
// read in second number from user as a string
secondNumber =
JOptionPane.showInputDialog( "Enter second integer" );
// convert numbers from type String to type int
number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );
sum = number1 + number2; //两数相加
dif = number1 - number2; //两数相减
pro = number1 * number2; //两数相乘
quo = number1 / number2; //两数相除
// display the results
JOptionPane.showMessageDialog(
null, "The sum is " + sum, "Results",
JOptionPane.PLAIN_MESSAGE ); //视图界面输出两数之和
JOptionPane.showMessageDialog(
null, "The dif is " + dif, "Results",
JOptionPane.PLAIN_MESSAGE ); //视图界面输出两数之差
JOptionPane.showMessageDialog(
null, "The pro is " + pro, "Results",
JOptionPane.PLAIN_MESSAGE ); //视图界面输出两数之积
JOptionPane.showMessageDialog(
null, "The quo is " + quo, "Results",
JOptionPane.PLAIN_MESSAGE ); //视图界面输出两数之商
System.exit( 0 ); // terminate the program
}
}
结果截图:(输入的数为10和2)
总结:实验三总体来说比较简单,没有太大难度,视图界面比较有趣,可以再以后的程序中多应用,唯一没有实现的地方是,我想把结果用一个输出框输出,但是没有做到,只能把结果分别输出。
[实验四]:RandomStr
程序设计思想:验证码的关键在于随机字符串的生成,字符串生成后就可以给出提示,把字符串输出,然后给一个输入的结构,根据输入的字符串是否和随机字符串相同来确定是否可以继续。
程序流程图:
源程序:
import javax.swing.JOptionPane;
public class RandomStr
{
public static void main(String[] args)
{
//定义一个空字符串
String yanzheng = "";
String result = "";
//进行6次循环
for(int i = 0 ; i < 6 ; i ++)
{
//生成一个97~122的int型的整数
int intVal = (int)(Math.random() * 26 + 97);
//将intValue强制转换为char后连接到result后面
result = result + (char)intVal;
}
yanzheng=JOptionPane.showInputDialog(null,"请输入验证码:"+result+"\n","验证",JOptionPane.PLAIN_MESSAGE);
if(yanzheng.equals(result))
{
JOptionPane.showMessageDialog(null, "输入正确" );
}
else
{
JOptionPane.showMessageDialog(null, "输入错误" );
}
}
}
实验结果截图:
实验总结:
实验的关键点在于弄懂随机字符串是如何产生的,然后用视图界面输出,并把输入的字符串与随机字符串作比较,需要注意的是,字符串作比较需要用A.equal(B)的形式,比较结果为true或者false,然后根据结果输出。