项目 |
内容 |
这个作业属于哪个课程 |
<任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 |
<作业链接地址>https://www.cnblogs.com/nwnu-daizh/p/11475377.html |
作业学习目标 |
|
第一部分:结合Java和C基础语法的异同比较,总结本周理论知识
Java区分大小写。
关键字public称为访问修饰符,这些修饰符用于控制程序的其他部分对这段代码的访问级别。
关键字class表明Java程序中的全部内容都包含在类内。
关键字class后面紧跟类名。类名必须以字母开头,后面可以跟字母和数字的任意组合,长度基本上没有限制,但不能使用Java保留字(class、public)作为类名。类名是以大写字母开头的名词。
源代码的文件必须与公共类的名字相同,并用.java作为扩展名。
Main方法必须申明为public。
System.out.print(“Hello”);输出Hello后不换行。(.)用于调用方法。
注释:行注释//(其注释内容从//开始到本行结束);
/*和*/将一段较长的注释括起来;
/**开始,*/结束。用来自动生成文档。
数据类型:
整型:int(4字节)、short(2字节)、long(8字节)、byte字节类型(1字节)。
长整型数值有一个后缀L或l,十六进制数值有一个前缀0x或0X,八进制有一个前缀0,二进制数值有一个前缀0B或0b。
浮点类型:float(4字节)、double(8字节)。Float类型的数值有一个后缀F或f,没有后缀F的浮点数值认为double类型。在十六进制的表示方法中,使用p表示指数,尾数采用十六进制,指数采用十进制。正无穷Double.POSITIVE-INFINITY、负无穷Double.NEGATIVE-INFINITY和非数字Double.NaN。不能检验一个特定值是否等于Double.NaN.
char类型:char类型的字面量值要用单引号括起来。\u表示Unicode(2字节)值。
Boolean类型:(4字节)只有true或false两个值。用来判断逻辑条件。Java中没有unsigned类型。
变量:
标识符是由字母、数字、下划线以及美元符号组成。标识符可以作为类名、对象名、变量名、方法名、数组名、文件名。声明一个变量后,必须用赋值语句对变量进行显式初始化。
在Java中,利用关键字final指示常量,只能被赋值一次。习惯上,变量名使用全大写。
运算符:使用new运算符创建对象。Instanceof返回一个布尔值指出某个对象是否是一个特定类或它的子类的一个实例。
数值类型之间的转换:如果两个操作数中一个是double类型,另一个操作数就会转换成double类型。:否则,如果其中一个是float类型,另一个操作数将会转换成float类型。否则,如果其中一个是long类型,另一个操作数就会转换long类型。否则,两个操作数都将被转换为int型。
强制类型转换:例 double x=9.997;
int nx=(int)x;
强制类型转换通过截断小数部分将浮点值转换成整型。
如果对浮点数进行舍入运算,以便得到最接近的整数,使用Math.round方法。
结合赋值和运算符:例x+=4;
自增自减运算符:n++;++n;
关系和Boolean运算符:相等(==)。
运算符的优先级:
字符串:Java的字符串就是Unicode字符序列。
子串:String类中的substring方法可以从一个较大的字符串中提取出一个子串。
例:String greeting=”hello”;
String s=greeting.substring(0,3);(从substring中从0开始计数,直到3为止,但不包含3。
拼接:“+”连接
例:String expletive=”Expletive”;
String PG13=”deleted”;
String message=”expletive+PG13”;
当将一个字符串与一个非字符串的进行拼接时 ,后者被转换成字符串。
不可变字符串:修改字符串,提取需要的字符,然后在拼接上替换的字符串。
例:greeting = greeting.substring(0,3)+”p!”;
检验字符串是否相等:使用方法equals方法。返回值为true或false。
例:”Hello”.equals(greeting)
要检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。
例:”Hello”.equalsIngnoreCase(“hello”)
一定不要使用==运算符检测两个字符串是否相等。
空串与Null串:空串””是长度为0的字符串。可以用以下代码检测字符串是否为空:
If(str.length()==0)或if(str.equals(“”)
String变量还可以存放null值,表示目前没有任何对象与该变量关联。要检查一个字符串是否为null,要使用以下条件:if(str==null)
有时也要检查一个字符串既不是null也不是空串:if(str != null&& str.length() != 0)
输入输出:
读取输入:通过控制台进行输入,需要构造一个Scanner对象,并用标准输入流System.In关联 Scanner in = new Scanner(System.in);
例:System.out.print(“What you name?”);
String name =in.nextLine();
使用nextLine方法是因为在输入行中可能包含空格。要想读取一个单词(以空格符为分隔符),就调用 String firstName=in.next();
要想读取一个整数,就调用nextInt方法
System.out.print(“How old are you?”);
Int age = in.nextInt();
格式化输出:
可使用Systn.out.print(x)将数值x输出到控制台上。将以x对应的数据头所所允许的最大非0数字位数打印输出x。例:
double x= 1000.0/ 3.0;
System.out.print(x);
使用printf方法:syteout.prinf("8.2f",x);
用8个字符的宽度和小数点后两个字符的精度打印x。也就是,打印输出一个空格和7个字符,3333.33
在printf中,还可以使用多个参数,例如:
Systen.out.printf("Hello, %5. Next year, you'll be %d", nane, age);
每一个以%字符开始的格式说明符都用相应的参数替换。格式说明符尾部的转换符将指示被格式化的数值类型: f表示浮点数,s表示字符串,d表示十进制整数。。
另外,还可以给出控制格式化输出的各种标志。这号标志增加了分组的分隔符。即
System,out.prinf("%.2f", 10000 / 3.0);
结果3,333.33
文件输入与输出:想对文件进行读取,需要用File对象构造一个Scanner对象。
例: Scanner in = new Scanner(Paths.get(“myfile.txt”),”UTF-8”);
如果文件不存在,创建该文件,可以像输出到System.out一样使用print、print、printIn命令。
控制流程:
块作用域:块是指一对大括号括起来的若干条简单的Java语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。但不能在嵌套的两个块中声明同名的变量。
条件语句:
例:if(x<=0){
If(x==0) sian=0;
else sign=-1;
}
循环:while语句与do-while语句。
确定语句:for语句。
多重选择:switch语句:switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止。
Case标签可以是:类型为char、byte、short、或int的常量表达式;枚举常量。
中断控制流程语句:
Break语句:用于跳出多重嵌套的循环语句。
continue语句:将控制转移到最内岑层循环的首部。
第二部分:实验部分
实验名称:实验二 Java基本程序设计(1)
1. 实验目的:
(1)进一步熟悉命令行和IDE两种方式下java程序开发的基本步骤;
(2)掌握Eclipse集成开发环境下导入Java源程序的过程;
(3)掌握Java语言构造基本程序的数据类型、变量、运算符、各类表达式、输入输出、流程控制的基本语法;
(4)掌握Math类、String类、StringBuilder类的用法。
3. 实验步骤与内容:
实验1 程序互评
实验2
package json; public class Test { public static void main(String[] args) { String s1="Hello!"; String s2="World"; String s3=s1+s2; System.out.println(s3); } }
实验3
public class Test { public static void main(String[] args) { StringBuilder s1=new StringBuilder("Hello!"); StringBuilder s2=new StringBuilder("world"); StringBuilder s3=new StringBuilder(); s3.append(s1);//用append拼接s1、s2 s3.append(s2); System.out.println(s3); } }
实验4
package json; public class Message { public static void main(String[] args) { if (args[0].equals("-h")) System.out.print("Hello,"); else if(args[0].equals("-g")) System.out.print("goodbye,"); for(int i=1;i
实验5 java程序导入
public class InputTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); // get first input System.out.print("What is your name? "); String name = in.nextLine(); // get second input System.out.print("How old are you? "); int age = in.nextInt(); // display output on console System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1)); } }
实验6 文件读写程序测试
public class WriteReadFileTest { /** * @param args * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException { //写入文件演示 PrintWriter out = new PrintWriter("myfile.txt"); out.println("姓名 高数 Java 数据结构 平均成绩 总成绩"); out.println("张三 20 30 40 0 0"); out.println("李四 50 60 70 0 0"); out.close();//切记,输出完毕,需要close //读入文件演示 Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in int number = 1;//行号 while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出 String line = in.nextLine();//读出myfile.txt的下一行 System.out.println("第"+(number++)+"行的内容" +"="+line); Scanner linescanner = new Scanner(line);//对每一行的内容建立一个扫描器 linescanner.useDelimiter(" ");//使用空格作为分隔符 String name = linescanner.next(); String math = linescanner.next(); String java = linescanner.next(); String ds = linescanner.next(); String avg = linescanner.next(); String total = linescanner.next(); System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total); } in.close();//读入完毕,最后需要对其进行close。 } }
实验7
public class Retirement { public static void main(String[] args) { // read inputs Scanner in = new Scanner(System.in); System.out.print("How much money do you need to retire? "); double goal = in.nextDouble();//读取一个浮点数 System.out.print("How much money will you contribute every year? "); double payment = in.nextDouble(); System.out.print("Interest rate in %: "); double interestRate = in.nextDouble(); double balance = 0; int years = 0;//定义变量并初始化 while (balance < goal) { balance += payment; double interest = balance * interestRate / 100; balance += interest; years++; } System.out.println("You can retire in " + years + " years."); } }
public class Retirement2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("How much money will you contribute every year? "); double payment = in.nextDouble(); System.out.print("Interest rate in %: "); double interestRate = in.nextDouble(); double balance = 0; int year = 0; String input; // update account balance while user isn't ready to retire do { // add this year's payment and interest balance += payment; double interest = balance * interestRate / 100; balance += interest; year++; // print current balance System.out.printf("After year %d, your balance is %,.2f%n", year, balance); // ask if ready to retire and get input System.out.print("Ready to retire? (Y/N) "); input = in.next(); }while (input.equals("N"));//与用于输入的Y/N比较内容是否相同,不同跳出循环 } }
实验8
public class LotteryOdds { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("How many numbers do you need to draw? "); int k = in.nextInt(); System.out.print("What is the highest number you can draw? "); int n = in.nextInt(); n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k) int lotteryOdds = 1; for (int i = 1; i <= k; i++)//计算n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k) lotteryOdds = lotteryOdds * (n - i + 1) / i; System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!"); } }
4. 实验总结:第三章的部分有好多与C语言相类似,像标识符以及循环结构。
通过实验二跟实验三理解String与StringBuilder的相似与不同,StringBuilder是不能用“+”来拼接的。
实验四理解并学会使用命令行输入参数,运行程序。
实验五、六、七、八学会导入课本原代码,并理解代码。
做到多读、多做,逐步提升自己的编程能力。