java第三讲_java语言基础第三讲作业

一:编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果。

源代码如下:

packagesuanfa;importjavax.swing.JOptionPane;public classsuanfa {public static voidmain(String[] args)

{

String firstNumber,secondNumber;intnumber1,number2;intadd,subjian,mulcheng,divchu;

firstNumber=JOptionPane.showInputDialog

("input the first integer please");

secondNumber=JOptionPane.showInputDialog

("inout the second integer please");

number1=Integer.parseInt(firstNumber);

number2=Integer.parseInt(secondNumber);

add= number1 +number2;

subjian= number1 -number2;

mulcheng= number1 *number2;

divchu= number1 /number2;

JOptionPane.showMessageDialog(null, "number1 + number2 is "

+add+"\nnumber1 - number2 is "+subjian+"\nnumber1 *"

+ " number2 is "+mulcheng+"\nnumber1 / number2 is "+divchu

,"Results", JOptionPane.PLAIN_MESSAGE);

}

}

截图如下:

4d5ea79a6abae98214d7ab86762099da.png

aefce78b4d3b023cbb696ea8dd7f1862.png

二:解决课程中的所有动手动脑的问题以及课后实验性的问题

1-EnumTest .java

packageEnumTest;public classEnumTest {public static voidmain(String[] args) {

Size s=Size.SMALL;

Size t=Size.LARGE;//s和t引用同一个对象?

System.out.println(s==t); //

//是原始数据类型吗?

System.out.println(s.getClass().isPrimitive());//从字符串中转换

Size u=Size.valueOf("SMALL");

System.out.println(s==u); //true//列出它的所有值

for(Size value:Size.values()){

System.out.println(value);

}

}

}enumSize{SMALL,MEDIUM,LARGE};

截图如下:

fb7c248e71514f9b1c51856d03366571.png

输出结果:false  false  true  SMALL MEDIUM LARGE

总结:枚举类型相当于一个定义的名为enum的类,例如本程序中,enum SIZE {SAMLL,MEDIUM,LARGE};意思就是定义一个名为SIZE的枚举类型,它可以在SMALL,MEDIUM,LARGE三个元素中取一个值。然后使用时就用SIZE s=SIZE.SMALL这种形式,相当于定义一个SIZE类型的变量s,因为s是SIZE类型的,所以这个s只能有SMALL,MEDIUM,LARGE三个值中的一个。给枚举类型变量赋值也可以直接调用valueOf()函数从字符串中转换。但是在使用枚举类型enum的对象SIZE之前需要有enum Size{SMALL,MEDIUM,LARGE}这样一句话给SIZE规定取值集合。

用javac编译这个程序的时候会生成2个class文件,说明enum Size{SMALL,MEDIUM,LARGE};相当于定义了一个class。

可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的

2-Addition.java

packageAddition;//An addition program

import javax.swing.JOptionPane; //import class JOptionPane

public classAddition {public static voidmain( 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//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 );//add the numbers

sum= number1 +number2;//display the results

JOptionPane.showMessageDialog(null, "The sum is " + sum, "Results",

JOptionPane.PLAIN_MESSAGE );

System.exit(0 ); //terminate the program

}

}

476b31ed3c1d7667f5b9cb323b8f9210.png

fe2d8e2c31f135e5d43b1baa846dfa77.png

76b91a0d0e4dd5c66cc5041bdd5fef7e.png

从结果可以看到,因为程序中调用Integer类的方法将string类型变量转化为int类,所以如果我在输入框中输入一个小数14.0和2.5就会报错。

总结:这个例子主要是学会了对话框的使用。通过JOptionPane类的两个method,即showInputDialog和showMessageDialog的简单调用,示范了对话框的基本用法。

而且由于我对JOptionPane并不熟悉,不知道里面有什么函数和接口,以及哪些函数需要给哪些参数,功能是什么,返回值是什么等等,所以需要上网查JDK 1.8 API。在这个过程中我大致学会了怎样查看API说明文档,说明文档里面有比较详细的说明每个函数和接口的使用,而且有些还有example。因为是英文的所以我还专门下载了一个有道词典桌面版,用于屏幕划词翻译。

3-TestDouble.java

packageTestDouble;public classTestDouble{public static voidmain(String args[]) {

System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));

System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));

System.out.println("4.015 * 100 = " + (4.015 * 100));

System.out.println("123.3 / 100 = " + (123.3 / 100));

}

}

a1434f80a82f2d0ffdb2ee147f97edcc.png

果分析:double类型的数据存储方式决定了它在运算时会得不到精确的结果。解决方法:

在执行double类型的数据的运算时,每进行一布计算就将其强制转化成其他数据类型;或者在表示两个double类型的数据相等的时候用“两数之差的绝对值小于某个特别小的数”,比如10e-6来表示。

packageTestBigDecial;importjava.math.BigDecimal;public classTestBigDecimal

{public static voidmain(String[] args)

{

BigDecimal f1= new BigDecimal("0.05");

BigDecimal f2= BigDecimal.valueOf(0.01);

BigDecimal f3= new BigDecimal(0.05);

System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");

System.out.println("0.05 + 0.01 = " +f1.add(f2));

System.out.println("0.05 - 0.01 = " +f1.subtract(f2));

System.out.println("0.05 * 0.01 = " +f1.multiply(f2));

System.out.println("0.05 / 0.01 = " +f1.divide(f2));

System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");

System.out.println("0.05 + 0.01 = " +f3.add(f2));

System.out.println("0.05 - 0.01 = " +f3.subtract(f2));

System.out.println("0.05 * 0.01 = " +f3.multiply(f2));

System.out.println("0.05 / 0.01 = " +f3.divide(f2));

}

}

ad5fc79fed77e02d732806ce7e8d7036.png

由此可见,构建BigDecimal对象可以解决不精确的问题。但是使用时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题

4-字符串连接操作

packageplus;public classPlus {public static voidmain(String[] args)

{int X=100;int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

}

}

7b6a73cf8353824f2b8df75afa2d42b9.png

分析:在System.out.println()中,如果在string字符串后面是+和变量,会把变量转换成string类型,加号起连接作用,然后把两个字符串连接成一个新的字符串输出;如果先有变量的加减运算再有字符串,那么会从左到右先计算变量的加减,然后再与后面的string结合成一个新的字符串。也就是说加号只有在两个string类型或者其中一个是string类型的时候才起到连接作用,否则仍然是运算符。

三:写一个自动生成验证码的程序

源代码如下:

packagePandomStr;importjavax.swing.JOptionPane;public classRandomStr {//public void createRandomStr(int weishu)//{//String str = "";//for(int i=1;i<=weishu;i++)//{// //生成一个表示a~z的ASCII的随机数//int intValue = (int)(Math.random()*26+97);// //将此随机数转化为其对应的字母并连接在str后面//str = str + (char)intValue;//}//}

public static voidmain(String[] args) {//生成一个6位的由小写字母组成的随机字符串

int weishu=6;

String str= "";for(int i=1;i<=weishu;i++)

{//生成一个表示a~z的ASCII的随机数

int intValue = (int)(Math.random()*26+97);//将此随机数转化为其对应的字母并连接在str后面

str = str + (char)intValue;

}//随机字符串生成完毕

String inputStr;

inputStr= JOptionPane.showInputDialog("请输入以下验证码\n"+str);if(inputStr.equals(str))

{

JOptionPane.showMessageDialog(null, "验证成功");

}else{

JOptionPane.showMessageDialog(null, "抱歉,验证失败");

}

}

}

cf1d8f66d8f6fb3f4a2b0c3922afeafb.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值