第五章
5.1 方法定义
- 修饰符
- 返回值类型
- 函数名
- 参数列表
- 函数体
5.2 方法调用
- 函数调用函数
- 函数递归调用
5.3 实际参数和形式参数
- 实际参数
- 形式参数
- 参数传值
5.4 方法重载
- 方法重载的定义
- 方法重载的条件
- 方法重载的注意项
5.5 变量的作用域
- 局部变量
- 全局变量
5.6 常用数学函数
- 三角函数
- 指数函数
- 取整函数
- min、max和abs方法
- random方法
- Random类
- 示例:计算三角形的角度
5.7 String相关函数
- 求字符串长度
- 从字符串中获取字符
- 连接字符串
- 字符串的转换
- 从控制台读取字符串
- 从控制台读取字符
- 字符串比较
- 获取字符串中的字符或子串
- 字符串和数字间的转换
- 示例:将十六进制数转换为十进制数
- 示例:生成随机字符
本章小结
1.程序模块化和可重用性是软件工程的中心目标之一。java提供了很多有助于完成这一目标的有效结构。方法就是一个这样的结构。
2.方法头指定方法的修饰符、返回值类型、方法名和参数。本章所有的方法都使用静态修饰符static。
3.方法可以返回一个值,返回值类型returnValueType是党阀要返回的值得数据类型。如果方法不返回值,则返回值类型就是关键字void。
4.参数列表是指方法中参数类型、次序和数量。方法名和参数列表一起构成方法签名(method signature)。参数是可选的,也就是说一个方法可以不包含参数。
5.return语句也可以用在void方法中,用来终止方法并返回到方法的调用者。在方法中,有时用于改变征程流程控制是很有用的。
6.传递给方法的是继续拿书应该与方法签名中的形式参数具有相同的数目、类型和顺序。
7.当程序调用一个方法时,程序控制就转移到被调用的方法。被调用的方法执行到该方法的return语句或到达方法结束的右括号时,将程序控制还给调用者。
8.在java中,带返回值的方法也可以拥有相同的方法名,只要他们的方法参数列表不同即可。
9.方法可以重载。这就意味着两个方法可以拥有相同的方法名,只要它们的方法参数列表不同即可。
10.在方法中声明的变量称作局部变量。局部变量的作用域是从声明它的地方开始,到包含这个变量的块结束为止。局部变量在使用前必须声明和初始化。
11.方法抽象是把方法的应用和实现分离。用户可以在不知道方法是如何实现的情况下使用方法。方法的实现细节封装在方法内,对调用该方法的用户隐藏,这称为信息隐藏或封装。
12.方法抽象将程序模块化为整齐、层次分明的形式。将程序写成简洁的方法构成的集合会比其他方式更容易编写、调试、维护和修改。这种编写风格也会提高方法的可重用性。
13.当实现一个大型程序时,可以使用自顶向下或自底向上的编码方法。不要一次性编写完整个程序。这种方式似乎浪费了更多编码时间(因为要反复编译和运行这个程序),但实际上它会更节省时间并使调试更容易。
练习题
5_1
代码:
public static void main(String[] args){
//获取一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a number:");
long n=scanner.nextLong();
//将n传入到sumDigits(n)函数里, 将会有一个返回值
System.out.println(sumDigit(n));
}
public static int sumDigit(long n){
int sum=0;
while(true){
sum=(int) (sum+n%10);
n=n/10;
if(n==0){
break;
}
}
return sum;
}
5_2
代码:
public static void main(String[] args){
//1获取一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a number:");
int num=scanner.nextInt();
//2判断是否是回文isPalindromr(int num)
if(isPalindrome(num)){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
private static boolean isPalindrome(int num) {
int reverseNum=reverse(num);
//2.1将数字反转 reverse(int num)
//2.2与原数字比较
//2.3相同 回文 不相同 不是回文
return reverseNum==num;
}
public static int reverse(int num){
String s="";
while(true){
s+=num%10;
num/=10;
if(num==0){
break;
}
}
return Integer.parseInt(s);
}
5_3
代码:
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a number:");
int number=scanner.nextInt();
reverse(number);
}
public static void reverse(int number){
String s="";
while(true){
s+=number%10;
number/=10;
if(number==0){
break;
}
}
// int reverseNum=reverse(number);
System.out.println(Integer.parseInt(s));
}
5_4
代码:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter three numbers:");
double sum1=scanner.nextDouble();
double sum2=scanner.nextDouble();
double sum3=scanner.nextDouble();
displaySortedNumbers(sum1,sum2,sum3);
}
public static void displaySortedNumbers(double num1,double num2,double num3){
double temp=0;
if(num1>num2&&num1>num3){
temp=num3;
num3=num1;
num1=temp;
if(num1>num2){
temp=num1;
num1=num2;
num2=temp;
}
}else if(num2>num1&&num2>num3){
temp=num2;
num2=num3;
num3=temp;
if(num1>num2){
temp=num1;
num1=num2;
num2=temp;
}
}else if(num3>num1&&num3>num2){
if(num1>num2){
temp=num1;
num1=num2;
num2=temp;
}
}
System.out.println(num3+">"+num2+">"+num1);
}
5_5
代码:
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.println("Enter the line:");
int line=scanner.nextInt();
displayPatttern(line);
}
public static void displayPatttern(int n){
for(int i=1;i<=n;i++){//行 空格 数字
for(int k=1;k<=n-i;k++){
System.out.print(" ");
}
for(int j=i;j>=1;j--){
System.out.print(j+" ");
}
System.out.println();
}
}
5_6
代码:
public static void main(String[] args){
for(int celsius=-10;celsius<=40;celsius++){
System.out.println(celsius+":"+celsiusToFahrenheit(celsius));
}
}
public static double celsiusToFahrenheit(double celsius){
return (9.0/5)*celsius+32;
}
public static double fahrenheitToCelsius(double fahrenheit){
return (5.0/9)*(fahrenheit-32);
}
5_8
代码:
public static void main(String[] args){
for(int i=1;i<=20;i++){
// System.out.println(i+":"+mi);
System.out.printf("%d:%8.4f\n",i,m(i));
}
}
public static double m(int i){
double sum=0;
for(int k=1;k<=i;k++){
sum+=1.0*k/(k+1);
}
return sum;
}
5_9
代码:
public static void main(String[] args){
for(int i=1;i<=901;i+=100){
System.out.println(i+":"+m(i));
}
}
public static double m(int i){
double pi=0.0;
double flag=1.0;
for(int k=1;k<i;k++){
pi+=flag/(2*k-1);
flag=-flag;
}
return 4*pi;
}
5_10
代码:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the n:");
int n=scanner.nextInt();
printMatrix(n);
}
public static void printMatrix(int n){
Random random=new Random();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
System.out.print(random.nextInt(2)+" ");
}
System.out.println();
}
}
5_11
代码:
public static void main(String[] args){
System.out.print("Ente a password:");
Scanner scanner=new Scanner(System.in);
String password=scanner.nextLine();
if(isPasswordValid(password)){
System.out.print("Valid Password");
}else{
System.out.print("InValid Password");
}
}
public static boolean isPasswordValid(String password){
boolean condition1=isLenghtMoreThanEight(password);
boolean condition2=isOnlyContainsLetterAndDight(password);
boolean condition3=isContainsMoreThanTwoDights(password);
if(condition1&&condition2&&condition3){
return true;
}else{
return false;
}
}
public static boolean isLenghtMoreThanEight(String password){
return password.length()>=8;
}
public static boolean isOnlyContainsLetterAndDight(String password){
for(int i=0;i<password.length();i++){
char c=password.charAt(i);
if(!(isLetter(c)||isDight(c))){
return false;
}
}
return true;
}
private static boolean isDight(char c) {
return c>='0'&&c<='9';
}
private static boolean isLetter(char c) {
return ((c>='a'&&c<='z')||(c>='A'&&c<='z'));
}
public static boolean isContainsMoreThanTwoDights(String password){
return getDightCount(password)>=2;
}
private static int getDightCount(String password) {
int count=0;
for(int i=0;i<password.length();i++){
char c=password.charAt(i);
if(isDight(c)){
count++;
}
}
return count;
}
5_12
代码:
5_13
代码:
5_14
代码:
5_16
代码:
5_17
代码: