Java程序设计语言笔记——第二章 基本程序设计

来源:互联网 发布:linux urldecode 命令 编辑:程序博客网 时间:2024/06/05 02:28

程序实例一:

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubdouble radius;double area;radius=20;area=radius*radius*3.1415926;System.out.println("The area for the circle of radius " + radius +" is" + area);}}

声明和定义是两个概念,例如double area;这个时候只是一个声明,只有给他赋一个数值时,该变量才被定义。

+ 也是字符串连接符,当他的操作数为非字符串时,这个非字符串值会被先转换为一个字符串,然后再与另一个字符串相连。

在源代码中,字符串常量不能跨行,如:

System.out.println("Hello World");
会造成编译错误。

程序实例二:

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubdouble radius;double area;System.out.print("Please input the radius: ");Scanner input =new Scanner(System.in);/** * nextByte()  读取一个byte类型的整数 * nextShort() 读取一个short类型的整数 * nextInt() * nextLong() * nextFloat() * nextDouble() * next() 读取一个字符串,该字符串在一个空白符之前结束 * nextLine() 读取一行文本 */radius=input.nextDouble();area=radius*radius*3.1415926;System.out.println("The area for the circle of radius " + radius +" is" + area);input.close();}}
理论上变量标识符可以用下划线,字母,数字和$,但尽量不要用$来命名标识符。

java中定义常量用的是final。按照习惯,常量一般全部用大写字母命名。

以下给出几种类型的存储大小:

byte 8位带符号数

short 16位带符号数

int 32位带符号数

long 64位带符号数

float 32位,标准IEEE 754

double 64位,标准IEEE 754

浮点数的计算都是近似的,如下代码结果并不是0.1,而是0.0999999999...

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(1.0-0.9);}}
数值直接量是值在程序中直接出现的常量值。如果直接量太大,超出该变量的存储范围,就会出现编译错误,而溢出是不会产生编译错误的,如以下代码:

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(Integer.MAX_VALUE+2);//不会有编译错误int i=10000000000000000000000;//产生编译错误}}
浮点型直接量带小数点,默认情况下是double型的,在数字后面加字母f或F表示该数为float型直接量,两者精度不同。如下代码:

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(1.0/3.0);System.out.println(1.0f/3.0f);}}
输出结果:0.3333333333333333
0.33333334
土鳖方式获取现在时间代码:

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stub
<span style="white-space:pre"></span>//System.currentTimeMillis()方法获取GMT时间从1970年1月1日00:00:00开始到当前时刻的毫秒数long totalMilliseconds=System.currentTimeMillis();long totalSeconds=totalMilliseconds/1000;long currentSecond=totalSeconds%60;long totalMinutes=totalSeconds/60;long currentMinute=totalMinutes%60;long totalHours=totalMinutes/60;long currentHour=totalHours%24;
<span style="white-space:pre"></span>//转换到CST时间需要加8System.out.println(currentHour+8 + ":" + currentMinute + ":" + currentSecond);}}

类型转换不改变被转换的变量。如

double d=4.5;int i=(int)d;
书上给出的保留营业税小数点后两位的程序实际上保留位数时忽略了四舍五入

package com.hnzhrh.javalanguage;import java.text.DecimalFormat;public class Practice {public static void main(String[] args) {
// TODO Auto-generated method stub//定义一个浮点数double area=11.23956;
<span style="white-space:pre"></span>//方式一DecimalFormat df=new DecimalFormat("#.00");System.out.println(df.format(area));
<span style="white-space:pre"></span>//方式二System.out.println(String.format("%.2f", area));
<span style="white-space:pre"></span>//教材方式System.out.println((int)(area*100)/100.0);}}
为了避免输入错误,不要在nextShort()等之后使用nextLine(),因为流中残存着回车,使用nextLine()会将上次输入之后按的回车读进去。

运行错误:是引起程序非正常中断的错误。运行应用程序时,当环境检测到一个不可能执行的操作时,就会出现运行错误。输入错误和0作除数是常见的运行错误。

通过输入对话框获取输入:

package com.hnzhrh.javalanguage;import javax.swing.JOptionPane;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stub//定义一个浮点数String age=JOptionPane.showInputDialog(null, "Input your age", "Input",JOptionPane.QUESTION_MESSAGE);JOptionPane.showMessageDialog(null, age, "Your age",JOptionPane.INFORMATION_MESSAGE);}}
将一个小范围类型的变量转换位大范围类型的过程称为拓宽类型。

将一个大范围类型的变量转换为小范围类型的过程称为缩窄类型。

拓宽类型不需要显式转换,可以自动完成,缩窄类型必须显式完成。

第二章复习题:

2.1 

Applet、class、public、int 是Java关键字

applet、$4、apps、想、一、radius 标识符是合法的

2.2

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubdouble miles=100;final double KILOMETERS_PER_MILE=1.609;double kilometers=miles*KILOMETERS_PER_MILE;System.out.println(kilometers);}}
2.3

使用常量的好处是便于统一修改和阅读。

2.4

5,15,48,1,9.0,7.5,,4.5

2.5

2,2,-4,-4,0,1

2.6

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println((2+100%7)%7);}}
2.7

package com.hnzhrh.javalanguage;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("byte: " + Byte.MIN_VALUE);System.out.println("byte: " + Byte.MAX_VALUE);System.out.println("short: " + Short.MIN_VALUE);System.out.println("short: " + Short.MAX_VALUE);System.out.println("int: " + Integer.MIN_VALUE);System.out.println("int: " + Integer.MAX_VALUE);System.out.println("long: " + Long.MIN_VALUE);System.out.println("long: " + Long.MAX_VALUE);System.out.println("float: " + Float.MIN_VALUE);System.out.println("float: " + Float.MAX_VALUE);}}
2.8

25/4=6

希望得到浮点数的话:25.0/4;

2.9-2.11 忽略

2.12

任何表达式都可以用作语句 正确

语句x=x+5是一个表达式 正确

2.13

都是正确的

2.14

i没有初始化。

2.15

见上面源代码

2.16

可以,自动类型转换。

2.17

显式类型转换截取小数部分。

2.18

12.5

12

2.19 忽略

2.20 除了\t

2.21-2.22 忽略

2.23

都允许,结果忽略

2.24 忽略

2.25 忽略

2.26 

1 + “welcome” +('\u0001'+ 1)

输出结果为1welcome2

2.27-2.32 忽略

编程练习:

2.1 

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stub//fahrenheit=(9/5)*celsius+32System.out.print("Enter a degree in Celsius:");Scanner in = new Scanner(System.in);double celsius=in.nextDouble();double fahrenheit=(9.0/5)*celsius+32;System.out.println(celsius + "Celsius is " + fahrenheit + " Fahrenheit");in.close();}}
2.2

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("Enter the radius and length of a sylinder :");Scanner in=new Scanner(System.in);final double PI=3.1415926;double radius;double length;radius=in.nextDouble();length=in.nextDouble();double area=radius * radius * PI;double volume=area * length;//格式化输出的时候是没有lf的,f代表浮点数,不是floatSystem.out.printf("The area is : %.4f\n" ,area);System.out.printf("The volume is : %.1f\n" ,volume);in.close();}}
2.3

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubfinal double METER_PER_FEET=0.305;System.out.print("Enter a value for feet : ");Scanner in=new Scanner(System.in);double feet=in.nextDouble();double meter=feet*METER_PER_FEET;System.out.println(feet + " feet is " + meter + " meters" );in.close();}}
2.4

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {// TODO Auto-generated method stubfinal double KG_PER_POUND=0.454;System.out.print("Enter a number in pounds : ");Scanner in=new Scanner(System.in);double pound=in.nextDouble();double kg=pound * KG_PER_POUND;System.out.println(pound + " pounds is " + kg + " kilograms");in.close();}}
2.5

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {double subtotal;double rate;double gratuity;double total;System.out.print("Enter the subtotal and a gratuity rate : ");Scanner in=new Scanner(System.in);subtotal=in.nextDouble();rate=in.nextDouble();gratuity=subtotal*rate*0.01;total=subtotal+gratuity;//System.out.println("The gratuity is " + gratuity + " and total is " + total);System.out.printf("The gratuity is %.2f and total is %.2f\n",gratuity,total);in.close();}}
2.6

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {System.out.print("Enter a number between 0 and 1000 : ");int a=new Scanner(System.in).nextInt();int sum=0;while(a!=0){sum=sum+a%10;a=a/10;}System.out.println("The sum of the digits is " + sum);}}
2.7

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {final int  MINUTES_PER_DAY =24*60;final int MINUTES_PER_YEAR=365*24*60;System.out.print("Enter the number of minutes : ");Scanner in = new Scanner(System.in);long minutes=in.nextLong();int years=(int)(minutes/MINUTES_PER_YEAR);int day=(int)(minutes%MINUTES_PER_YEAR)/MINUTES_PER_DAY;//格式化输出%d代表整数型数据,没有%ld;System.out.printf("%d minutes is approximately %d years and %d days.\n" , minutes , years , day);in.close();}}
2.8

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {short one_asc;System.out.print("Enter an ASCII code : ");Scanner in = new Scanner(System.in);one_asc=in.nextShort();System.out.println("The character for ASCII code " + one_asc + " is " + (char)one_asc);in.close();}}
2.9

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {System.out.print("Enter an amount in integer , for example 1156 : ");Scanner in = new Scanner(System.in);int amount=in.nextInt();int remainAmount=amount;int dollar=remainAmount/100;remainAmount=remainAmount%100;int quarter=remainAmount/25;remainAmount=remainAmount%25;int dime=remainAmount/10;remainAmount=remainAmount%10;int nickel=remainAmount/5;remainAmount=remainAmount%5;int penny=remainAmount/1;System.out.println("Your amount " + amount + " consists of \n" + "\t" + dollar + " dollars\n" +"\t" + quarter + " quarters\n" + "\t" + dime + " dimes\n" +"\t" + nickel + " nickels\n" +"\t" + penny + " pennies");in.close();}}

2.10

package com.hnzhrh.javalanguage;import javax.swing.JOptionPane;public class Practice {public static void main(String[] args) {int amount=Integer.parseInt(JOptionPane.showInputDialog(null, "Enter an amount in integer , for example 1156"));int remainAmount=amount;int dollar=remainAmount/100;remainAmount=remainAmount%100;int quarter=remainAmount/25;remainAmount=remainAmount%25;int dime=remainAmount/10;remainAmount=remainAmount%10;int nickel=remainAmount/5;remainAmount=remainAmount%5;int penny=remainAmount/1;JOptionPane.showMessageDialog(null, "Your amount " + amount + " consists of \n"  + dollar + " dollars\n" + quarter + " quarters\n" + dime + " dimes\n" +nickel + " nickels\n" + penny + " pennies ");}}
2.11

package com.hnzhrh.javalanguage;import java.util.Scanner;public class Practice {public static void main(String[] args) {System.out.print("Enter employee's name : ");Scanner in=new Scanner(System.in);String name = new String();name=in.next();System.out.print("Enter number of hours worked in a week : ");int hours=in.nextInt();System.out.print("Enter hourly pay rate : ");double payRate=in.nextDouble();System.out.print("Enter federal tax withholding rate : ");double federalTaxRate=in.nextDouble();System.out.print("Enter state tax withholding rate : ");double stateTaxRate=in.nextDouble();double grossPay=hours*payRate;double federalTax=federalTaxRate*grossPay;double stateTax=stateTaxRate*grossPay;double totalTax=federalTax+stateTax;double netPay=grossPay-totalTax;System.out.println("Employee Name : " + name);System.out.println("Hours Worked : " + hours);System.out.println("Pay Rate : $" + payRate);System.out.println("Gross Pay : " + grossPay);System.out.println("Deductions : ");System.out.println("  Federal Withholding (" + federalTaxRate*100 + "%) :   $" + federalTax);System.out.println("  State Withholding (" + stateTaxRate*100 + "%):   $" + stateTax);System.out.println("  Total Deduction :    $" + totalTax);System.out.println("Net Pay :    $" + netPay);in.close();}}
其余编程练习类似。





















0 0
原创粉丝点击