Java练习题11.2 方法的重载

Java练习题11.2 方法的重载


1.定义三个重载方法,分别用来求两个整数、两个实数、三个整数的平均值,然后分别调用并将结果输出,如下图所示

package com.shangjiti.aoian;
import java.util.Scanner;
public class Done1_1 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int num1=sc.nextInt();
		int num2=sc.nextInt();	
		int num3=sc.nextInt();
		double num4=sc.nextDouble();
		double num5=sc.nextDouble();
		System.out.println(avg(num1,num2));
		System.out.println(avg(num1,num2,num3));
		System.out.println(avg(num4,num5));
	}
	public static double avg(int a,int b) {
		return (a+b)/2.0;			
	}
	public static double avg(int a,int b,int c) {
		return (a+b+c)/3.0;	
	}
	public static double avg(double d,double e) {
		return (d+e)/2;		
	}
}

2.首先定义一个方法,用来打印九九乘法表;然后重载该方法,增加一个打印任意行数的九九乘法表的方法

package com.shangjiti.aoian;
import java.util.Scanner;
public class Done2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        print(x);
    }
    public static void print(){
        for (int i = 1; i <= 9; i++){
            for(int j = 1; j <= i; j++)
                System.out.print(j+"*"+i+"="+j*i+"\t");
            System.out.println();
        }
    }
    public static void print(int a){
        for (int i = 1; i <= a; i++){
            for(int j = 1; j <= i; j++)
                System.out.print(j+"*"+i+"="+j*i+"\t");
            System.out.println();
        }
	}
}

3.定义两个重载方法,分别用来求两个整数的较大值、三个整数的最大值

package com.shangjiti.aoian;
public class Done3 {
	public static void main(String[] args) {
		System.out.println("两个数最大值是:"+max(65,33));
		System.out.println("三个数最大值是:"+max(26,75,64));
	}
	public static int max(int a,int b){
		return(a>b)?a:b;
	}
	public static int max(int a,int b,int c){
		int max =(a>b)?a:b;
		return(max>c)?max:c;
	}
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 11.2题要我们实现一个简单的Java类,该类可以将一个字符串中的所有单词首字母大写,并返回处理后的字符串。 我们可以先定义一个名为StringUtils的类,其中包含一个名为capitalize的静态方法,该方法接受一个字符串参数,返回处理后的字符串。 在capitalize方法中,我们可以使用Java的正则表达式来匹配字符串中的单词,并将每个单词的首字母转换为大写。具体实现可以参考以下代码: ``` import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils { public static String capitalize(String str) { Pattern pattern = Pattern.compile("\\b\\w"); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, matcher.group().toUpperCase()); } matcher.appendTail(sb); return sb.toString(); } } ``` 在上述代码中,我们首先使用Pattern.compile方法创建一个正则表达式模式,该模式可以匹配字符串中的单词首字母。然后使用Matcher类的find方法来查找字符串中的匹配项,并使用appendReplacement方法将每个匹配项替换为大写字母。最后使用appendTail方法将剩余的字符串添加到结果中,并返回处理后的字符串。 使用该类的示例代码如下: ``` public class Main { public static void main(String[] args) { String str = "hello world"; String result = StringUtils.capitalize(str); System.out.println(result); // 输出 "Hello World" } } ``` 在上述示例代码中,我们首先定义一个字符串变量str,然后调用StringUtils类的capitalize方法将字符串中的单词首字母大写,并将结果保存到result变量中。最后输出result变量的,即可看到处理后的字符串。 ### 回答2: 本题主要是要Java的网络编程结构和Java提供的网络编程接口进行概述和总结,并且深入探讨Java Socket类的使用。 Java的网络编程结构包含两个主要部分:网络协议和Java网络编程API。Java提供了丰富的类库和接口,用于实现各种网络协议及传输层协议(TCP/IP),包括Socket、ServerSocket、DatagramSocket等类。它们都继承自java.net包中的抽象类,实现了一系列的方法和属性,实现了数据传输的功能。 Java提供了Socket类来实现客户端和服务器之间的数据传输。Socket类是一个封装了传输层的TCP/IP协议的类,它提供了Socket的各种操作方法和Socket的各种配置选项。Socket类的构造函数有两种方式:一种是提供ip地址和端口号,另一种是提供已经获取该服务器地址的InetAddress对象和端口号。在Socket类中,可以通过getInputStream()和getOutputStream()方法获取数据传输的输入和输出流。 Socket类不仅可以用于客户端的请,还可以用于服务端的监听和响应。因此,Java提供了ServerSocket类来实现服务端的Socket创建。ServerSocket类监听指定端口号上的客户端请,并且收到请后会调用accept()方法,创建一个新的Socket连接来处理请。ServerSocket类的accept()方法在没有请时会一直阻塞等待。这样就可以实现无限循环监听客户端请。 当Java Socket传输数据时,通常要使用一些协议,比如HTTP协议、SMTP协议和FTP协议等。Java提供了很多类和接口来处理这些协议,比如java.net.URL类、java.net.URLUpdate类、java.net.URLConnection类等。这些类和接口都可以方便地完成网络通信所需要的各种操作。 总之,Java网络编程是非常重要的,可以实现各种通信方式,并且提供了许多工具和接口可供使用。Socket类是Java网络编程中最重要的类之一,它可以实现客户端和服务器之间的数据传输,而ServerSocket类可以实现服务端的Socket创建和连接处理。无论是何种情况,Java网络编程都是非常重要的一部分。 ### 回答3: 本题主要是关于Java线程的控制和同步问题。在11.2题中,我们需要编写一个程序来模拟生产者/消费者模型。其中生产者生产苹果,消费者消费苹果,一共有10个苹果,生产者只有在框案上还有空位可以放苹果的时候才能生产,消费者只有在框案上还有苹果的时候才能消费。 首先,需要定义一个线程安全的框子类,其中包含框案的状态(装有多少苹果)和状态的读写接口(取苹果,放苹果)方法。这里可以使用synchronized关键字来解决同步问题,确保每个方法在运行时只能被单个线程访问。 接着,需要定义一个生产者线程类和一个消费者线程类,分别使用while循环进行苹果的生产和消费,直到达到预定数量为止。在每次生产和消费之后,需要使用wait()方法来将线程挂起,直到框子上有苹果或空位,防止线程死循环或浪费资源。 最后,在main函数中创建框子对象和生产者、消费者线程对象,并启动生产者线程和消费着线程,等待线程结束即可。 总之,Java线程的控制和同步需要仔细考虑,尤其是在多线程环境中,要避免竞态条件和资源冲突等问题,保证线程安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值