北京信息科技大学Java语言程序设计Java语言设计基础.docx
《北京信息科技大学Java语言程序设计Java语言设计基础.docx》由会员分享,可在线阅读,更多相关《北京信息科技大学Java语言程序设计Java语言设计基础.docx(20页珍藏版)》请在冰点文库上搜索。
北京信息科技大学Java语言程序设计Java语言设计基础
【实验名称】Java程序设计基础
【实验目的】
1、学习和掌握Java程序的基本结构。
2、学习和掌握Java程序的基本开发过程和方法。
3、学习和掌握程序设计的基本开发步骤。
4、学习和掌握Java程序的基本输入、输出方法。
5、学习和掌握Java程序设计的基本技术。
【实验日期和时间记录】实验预习时间:
2014.4.12.8:
30—10:
30
实验过程时间:
2014.4.1210:
30—17:
00及2014.4.26.8:
30—12:
00
【实验内容】
1、创建、编译和执行Welcome.java。
(参见教材1.7和1.8小节,P8-11)
【实验预习】
1.这道题需要解决的是输出“welcometojava”这个字符串。
2.解决方案:
用system.out.println(“welcometojava”).方法输出。
没有输入与处理,直接输出。
3.学会输出字符串的方法。
【附:
程序代码】
publicclassWelcome{
publicstaticvoidmain(String[]args){
System.out.println("Welcometojava!
");//输出并显示信息Welcometojava!
}
}
【实验过程及结果记录】
在实验过程中没有遇到问题,需要注意的是System.out.println();的第一个字母大写。
2、(财务应用程序:
工资单)编写程序,读入工资基本信息并打印工资单。
编写两种版本的程序,依次使用控制台实现输入\输出和GUI实现输入\输出。
运行效果可参见图1和图2。
说明:
⑴题目来源,教材编程练习2.11(P51)。
⑵控制台输入输出,请参考教材2.3(P21)和1.8小节(P10)。
⑶GUI输入输出,请参考教材2.18(P44)和1.9(P12)小节。
图1工资单(控制台输入、输出)
1)从控制台输入
【实验预习】
1.该程序是用来打印工资单。
2.读入信息,将信息以按照一定格式输出。
【附:
程序代码】
importjava.util.Scanner;
publicclassPayroll{
publicstaticvoidmain(String[]args){
//创建一个Scanner
Scannerinput=newScanner(System.in);
//输入姓名
System.out.print("Enteremployee'sname:
");
Stringname=input.next();
//输入工作时间
System.out.print("Enternumberofhourworkedinaweek:
");
doubleweekHour=input.nextInt();
//输入每小时工资数
System.out.print("Enterhourlypayrate:
");
doublepayRate=input.nextDouble();
//输入联邦税率
System.out.print("Enterfederaltaxwithoutholdingrate:
");
doublefederalRate=input.nextDouble();
//输入州税税率
System.out.print("Enterstatetaxwithoutholdingrate:
");
doublestateRate=input.nextDouble();
//输出工资单
System.out.println("雇员姓名:
"+name);
System.out.println("工作小时数:
"+weekHour);
System.out.println("每小时工资数:
$"+payRate);
System.out.println("工资总收入:
$"+payRate*weekHour);
System.out.println("所纳税款:
");
System.out.println("联邦税<"+federalRate*100+"%>:
$"+federalRate*payRate*weekHour);
System.out.println("州税:
<"+stateRate*100+"%>:
$"+(int)(stateRate*100*payRate*weekHour)/100.0);
System.out.println("总纳税:
$"+(int)((federalRate*payRate*weekHour+stateRate*payRate*weekHour)*100)/100.0);
System.out.println("净收入:
$"+(int)((payRate*weekHour-federalRate*payRate*weekHour-stateRate*payRate*weekHour)*100)/100.0);
}
}
【实验过程及结果记录】
实验过程遇到的问题是:
不会保留两位小数。
在题中最后求州税和净收入和总纳税需保留两位小数。
解决方法是现将要保留的乘以100,取整后,在除以100.0即可。
2)使用GUI
【实验预习】
1.该程序是用来打印工资单。
2.通过GUI读入信息,将信息按照一定格式用GUI输出。
【附:
程序代码】
importjavax.swing.JOptionPane;
publicclassPayrollGUI{
publicstaticvoidmain(String[]args){
//输入雇员姓名
Stringname=JOptionPane.showInputDialog("Enteremployee'sname:
");
//输入工作小时数
StringweekHourString=JOptionPane.showInputDialog("Enternumberofhourworkedinaweek:
");
intweekHour=Integer.parseInt(weekHourString);
//输入每小时工资数
StringpayRateString=JOptionPane.showInputDialog("Enterhourlypayrate:
");
DoublepayRate=Double.parseDouble(payRateString);
//输入联邦税率
StringfederalRateString=JOptionPane.showInputDialog("Enterfederaltaxwithoutholdingrate:
");
DoublefederalRate=Double.parseDouble(federalRateString);
//输入州税税率
StringstateRateString=JOptionPane.showInputDialog("Enterstatetaxwithoutholdingrate:
");
DoublestateRate=Double.parseDouble(stateRateString);
//用GUI输出工资单
Stringoutput1="雇员姓名:
"+name+"\n";
Stringoutput2="工作小时数:
"+weekHour+"\n";
Stringoutput3="每小时工资数:
$"+payRate+"\n";
Stringoutput4="工资总收入:
$"+payRate*weekHour+"\n";
Stringoutput5="所纳税款:
"+"\n";
Stringoutput6="联邦税<"+federalRate*100.0+"%>:
$"+federalRate*payRate*weekHour+"\n";
Stringoutput7="州税:
<"+stateRate*100.0+"%>:
$"+(int)(stateRate*100*payRate*weekHour)/100.0+"\n";
Stringoutput8="总纳税:
$"+(int)((federalRate*payRate*weekHour+stateRate*payRate*weekHour)*100)/100.0+"\n";
Stringoutput9="净收入:
$"+(int)((payRate*weekHour-federalRate*payRate*weekHour-stateRate*payRate*weekHour)*100)/100.0+"\n";
JOptionPane.showMessageDialog(null,output1+output2+output3+output4+output5+output6+output7+output8+output9);
}
}
【实验过程及结果记录】
实验中遇到的问题是:
在使用federalRateString=JOptionPane.showInputDialog("Enterfederaltaxwithoutholdingrate:
");
这句话中,JOptionPane.showInputDialog()函数直接返回的是String类型。
不用在转化。
3、(财务应用程序:
计算税款)按照表1,基于纳税人的身份和可征税收入,编写程序,计算某个纳税人的纳税额。
比如,计算一个收入400000美元的单身纳税人的纳税额。
程序的运行效果见图3。
说明:
⑴题目来源,编程练习3.13(P85)和程序清单3-6(P68)。
⑵程序设计的基本步骤,参见2.2小节(P18)和教材P84给出的教学注意。
⑶解决方案的选择模型,参见授课ppt文稿。
【实验预习】
1、这道题解决的是计算某个纳税人的纳税额。
2、输入:
用户先输入选择的纳税人所属类型。
输入纳税人收入。
处理:
判读纳税人所属类型,及分别求纳税人的收入的不同阶段所需的纳税额,求和。
输出:
输出纳税人所交税款
3、技术支持:
用到的是输入函数,条件语句,输出函数。
4、实验步骤:
先写出输入输出语句,在写中间处理部分。
【附:
程序代码】
importjava.util.Scanner;
publicclassComputeTax{
publicstaticvoidmain(String[]args){
//创建一个Scanner
Scannerinput=newScanner(System.in);
//输入用户所属类型
System.out.println("(0-单身税人,1-已婚共同纳税人或证实的鳏寡,2-已婚单独纳税人,3-家庭户主纳税人)");
System.out.println("Enterthefillingstatus:
");
intstatus=input.nextInt();
//输入用户收入
System.out.println("Enterthetaxableincome:
");
doubleincome=input.nextDouble();
doubletax=0;
if(status==0)//计算单身税人的税款
{
if(income<=6000){
tax=income*0.10;
}elseif(income<=27950){
tax=6000*0.10+(income-6000)*0.15;
}elseif(income<=67700){
tax=6000*0.10+(27950-6000)*0.15+(income-27950)*0.27;
}elseif(income<=141250){tax=6000*0.10+(27950-6000)*0.15+(67700-27950)*0.27+(income-67700)*0.30;
}elseif(income<=307050){tax=6000*0.10+(27950-6000)*0.15+(57700-27950)*0.27+(141250-67700)*0.30+(income-141250)*0.35;
}else{tax=6000*0.10+(27950-6000)*0.15+(57700-27950)*0.27+(141250-67700)*0.30+(307050-141250)*0.35+(income-307050)*0.386;
}
}elseif(status==1){//计算已婚共同纳税人或证实的鳏寡的税款
if(income<=12000){
tax=income*0.10;
}elseif(income<=46700){
tax=12000*0.10+(income-12000)*0.15;
}elseif(income<=112850){tax=12000*0.10+(46700-12000)*0.15+(income-46700)*0.27;
}elseif(income<=171950){
tax=12000*0.10+(46700-12000)*0.15+(112850-46700)*0.27+(income-112850)*0.30;
}elseif(income<=307050){tax=12000*0.10+(46700-12000)*0.15+(112850-46700)*0.27+(171950-112850)*0.30+(income-171950)*0.35;
}else{tax=12000*0.10+(46700-12000)*0.15+(112850-46700)*0.27+(171950-112850)*0.30+(307950-171950)*0.35+(income-307050)*0.386;
}
}elseif(status==2){//计算已婚单独纳税人的税款
if(income<=6000){
tax=income*0.10;
}elseif(income<=23350){
tax=6000*0.10+(income-6000)*0.15;
}elseif(income<=56425){
tax=6000*0.10+(46700-6000)*0.15+(income-23350)*0.27;
}elseif(income<=85976){tax=6000*0.10+(23350-6000)*0.15+(56425-23350)*0.27+(income-56425)*0.30;
}elseif(income<=153525){tax=6000*0.10+(23350-6000)*0.15+(56425-23350)*0.27+(85976-56425)*0.30+(income-85976)*0.35;
}else{
tax=6000*0.10+(23350-6000)*0.15+(56425-23350)*0.27+(85976-56425)*0.30+(85976-171950)*0.35+(income-85976)*0.386;
}
}elseif(status==3){//计算家庭户主纳税人的税款
if(income<=10000){
tax=income*0.10;
}elseif(income<=37450){
tax=10000*0.10+(income-10000)*0.15;
}elseif(income<=96700){tax=10000*0.10+(37450-10000)*0.15+(income-37450)*0.27;
}elseif(income<=156600){tax=10000*0.10+(37450-10000)*0.15+(96700-37450)*0.27+(income-96700)*0.30;
}elseif(income<=307050){tax=10000*0.10+(37450-10000)*0.15+(96700-37450)*0.27+(156600-96700)*0.30+(income-156600)*0.35;
}else{
tax=10000*0.10+(37450-10000)*0.15+(96700-37450)*0.27+(156600-96700)*0.30+(307050-156600)*0.35+(income-307050)*0.386;
}
}
else{
System.out.println("Error:
invalidstatus");
System.exit(0);
}
//输出该用户所交税款
System.out.println("Taxis"+(int)(tax*100)/100.0);
}
}
【实验过程及结果记录】
实验中遇到的问题:
暂无。
4、(财务应用程序:
打印税表)在问题3的基础上,使用下面的方法头部,编写一个计算税款的方法:
publicstaticdoublecomputeTax()intstatus,doubletaxableIncome)
使用这个方法编写程序,打印可征税收入从50000美元到60000美元,收入间隔50美元的所有四种纳税人的纳税表。
说明:
⑴题目来源,编程练习5.15(P152)。
⑵程序设计的基本步骤,参见2.2小节(P18)和教材P84给出的教学注意。
⑶解决方案的循环设计策略,参见4.2.2小节(P94)。
⑷方法,参见教材第5章。
【实验预习】
1、问题描述:
打印四种纳税人的纳税表
2、没有输入,处理:
判断收入每部分所需付税款,求和。
输出:
每隔50美元写出四种纳税人所需付税款
3、技术支持:
用到的是条件语句,循环语句,输出语句。
【附:
程序代码】
importjava.util.Scanner;
publicclassPrintTax{
publicstaticvoidmain(String[]args){
System.out.println("Taxableincome"+"\t"+"Single"+"\t\t"+"Marriedjoint"+"\t"+"MarriedSeperate"+"\t"+"Headof");
//打印可征税收入从50000美元到60000美元,收入间隔50美元的所有四种纳税人的纳税表。
for(doubleincome=50000;income<=60000;income=income+50){
System.out.print(income);
for(intstatus=0;status<=3;status++){
System.out.print("\t\t\t"+computeTax(status,income));
}
System.out.println();
}
}
//计算税款的函数
publicstaticdoublecomputeTax(intstatus,doubleincome){
doubletax=0;
if(status==0)
{
if(income<=6000){
tax=income*0.10;
}elseif(income<=27950){
tax=6000*0.10+(income-6000)*0.15;
}elseif(income<=67700){
tax=6000*0.10+(27950-6000)*0.15+(income-27950)*0.27;
}elseif(income<=141250){
tax=6000*0.10+(27950-6000)*0.15+(67700-27950)*0.27+(income-67700)*0.30;
}elseif(income<=307050){
tax=6000*0.10+(27950-6000)*0.15+(57700-27950)*0.27+(141250-67700)*0.30+(income-141250)*0.35;
}else{
tax=6000*0.10+(27950-6000)*0.15+(57700-27950)*0.27+(141250-67700)*0.30+(307050-141250)*0.35+(income-307050)*0.386;
}
}elseif(status==1){
if(income<=12000){
tax=income*0.10;
}elseif(income<=46700){
tax=12000*0.10+(income-12000)*0.15;
}elseif(income<=112850){
tax=12000*0.10+(46700-12000)*0.15+(income-46700)*0.27;
}elseif(income<=171950){
tax=12000*0.10+(46700-12000)*0.15+(112850-46700)*0.27+(income-112850)*0.30;
}elseif(income<=307050){
tax=12000*0.10+(46700-12000)*0.15+(112850-46700)*0.27+(171950-112850)*0.30+(income-171950)*0.35;
}else{
tax=12000*0.10+(46700-12000)*0.15+(112850-46700)*0.27+(171950-112850)*0.30+(307950-171950)*0.35+(income-307050)*0.386;
}
}elseif(status==2){
if(income<=6000){
tax=income*0.10;
}elseif(income<=23350){
tax=6000*0.10+(income-6000)*0.15;
}elseif(income<=56425){
tax=6000*0.10+(46700-6000)*0.15+(income-23350)*0.27;
}elseif(income<=85976){
tax=6000*0.10+(23350-6000)*0.15+(56425-23350)*0.27+(income-56425)*0.30;
}elseif(income<=153525){
ta