JAVA编程练习题一

编程练习题一

1、将字符串[a-b-c-d-e-f]按[-]切割,找到[c]字符,替换为大写,然后倒序输出[f-e-d-C-b-a];

public class Test1 {
 	public static void main(String[] args) {
 		String str = "a-b-c-d-e-f";
 		String[] strs = str.split("-");
 		// 循环遍历,小写字母变大写
 		for (int i = 0; i < strs.length; i++) {
        	String s = strs[i];
        	if (s.equals("c")) {
            	strs[i] = s.toUpperCase();
        	}
 		}
 		String temp = "";
    	for (int i = strs.length - 1; i >= 0; i--) {
 			temp += strs[i] + "-";
 		}
 		// 去除最后一个短横
	 	System.out.println(temp.substring(0, temp.length()-1));
 	}
}

2、 定义学生类(包含学号、姓名、年龄),将你所在小组组员添加到一个集合中,并按学号排序后输出 ;

public class Student implements Comparable<Student> {
 	private int code;//学号
 	private String name;//姓名
 	private int age;//年龄
 	
 	//Getter和Setter方法
    public int getCode() {
  		return code;
 	}
 	public void setCode(int code) {
  		this.code = code;
 	}
 	public String getName() {
 		 return name;
 	}
 	public void setName(String name) {
  		this.name = name;
 	}
 	public int getAge() {
  		return age;
 	}
 	public void setAge(int age) {
  		this.age = age;
 	}
 	//满参构造器
 	public Student(int code, String name, int age) {
  		super();
  		this.code = code;
  		this.name = name;
 		this.age = age;
 	}
    //重写compareTo方法
 	@Override
 	public int compareTo(Student o) {
  		int flag;
  		if (this.code > o.code) {
   			flag = -1;
  		} else if (this.code == o.code) {
   			flag = 0;
  		} else {
   			flag = 1;
  		}
 		 return flag;
	}
 	//重写toString方法
 	@Override
 	public String toString() {
  		return "Student [code=" + code + ", name=" + name + ", age=" + age+ "]";
 	}
}

测试类:

package com.jiulingcode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test2 {
 	public static void main(String[] args) {
  		List<Student> teams = new ArrayList<Student>();
 		// 新建学生对象
  		Student stu1 = new Student(1, "ZS", 15);
  		Student stu2 = new Student(3, "LS", 13);
  		Student stu3 = new Student(2, "JL", 18);
  		Student stu4 = new Student(4, "YZ", 12);
  		// 向集合添加学生对象
  		teams.add(stu1);
  		teams.add(stu2);
  		teams.add(stu3);
  		teams.add(stu4);
  		// 按学号倒叙排列
  		Collections.sort(teams);
  		// 遍历学生
  		for (Student stu : teams) {
   			System.out.println(stu);
  		}
 	}
}

3、在主类中定义方法f1(int n)和方法f2(int n),它们的功能都为求n!。方法f1()用循环实现,f2()用递归实现。在主方法main()中,以4为参数调用两个方法,并输出计算结果;

public class Test3{
	public static void main (String[] args){
		System.out.println("用循环实现求 n! 的结果(n=4):"+f1(4));
		System.out.println("用递归实现求 n! 的结果(n=4):"+f2(4));
	}
	static long f1(int n){
		long k=1;
		for(int i=1;i<=n;i++)
			k*=i;
		return k;
	}
	static long f2(int n){
		if(n==1) 
          	return 1;
		else 
   			return n*f2(n-1);
	}
}

4、查找字符串”daghreh”的子字符串集;

public class Test4{ 
  /** 
    *API中String的常用方法
    1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 
	2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 
	3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 
	4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
    */ 
   // 查找指定字符串是否存在 
   public static void main(String[] args) { 
	    String str = "daghreh"; 
	    // 从头开始查找是否存在指定的字符 
	    System.out.println(str.indexOf("h")); 
	    // 从第五个字符位置开始往后继续查找 
	    System.out.println(str.indexOf("h", 4)); 
	    //若指定字符串中没有该字符则系统返回-1 
	    System.out.println(str.indexOf("x")); 
   }
}

5、请用不大于100的随机数实现一个大小为10的数组,并用冒泡排序法排序;

public static void main(String[] args) {
    int temp;
    int i;
    int [] data;

    Random r=new Random();
    data = new int[15];
    //通过运算得到范围内的数
    for(i=0;i<data.length;i++){
        data[i]=r.nextInt(100)%(100-10)+10;
    }
        
    //冒泡排序法
    for(i=0;i<data.length;i++){ 
        for(int j=i;j<data.length;j++){
            if(data[j]<data[i]){
                temp=data[j];
                data[j]=data[i];
                data[i]=temp;
            }
        }
    }
    for(int num:data){
        System.out.print(num+"\t");
    }
}
//通过判断筛选的代码如下:
public static void main(String[] args) {
    int temp;
    int i;
    boolean decide=true;
    int [] data;

    Random r=new Random();
    data = new int[10];
    for(i=0;i<data.length;i++){
        temp=r.nextInt(100);
        if(temp<10){    //如果随机数小于10,什么也不做
            i--;
            decide=false;
        }
        if(decide){   
            data[i]=temp;
        }
        decide=true;  //确保判断条件的稳定
    }
        
    //冒泡排序
    for(i=0;i<data.length;i++){
        for(int j=i;j<data.length;j++){
            if(data[j]<data[i]){
                temp=data[j];
                data[j]=data[i];
                data[i]=temp;
            }
        }
    }
    for(int num:data){
        System.out.print(num+"\t");
    }
}

6、请用代码实现一个单例模式;

饿汉式:

//单例模式:饿汉式
public class Hungry{
    private static Hungry mHungry=new Hungry();
    /**
    *构造方法私有可以避免调用者错误的创建新的对象
    *这还是很重要的
    *线程安全
    **/
    private Hungry(){
    }
    /**
    *供调用者在外部使用
    **/
    public static Hungry getInstance(){
        return mHungry;
    }
}

懒汉式(饱汉式):

//单例模式:懒汉式(饱汉式) 线程不安全—>线程安全需要加
public class FullMode{
    private static  FullMode mFullMode;
    private FullMode(){
    }
    /*效率慢
    public static Syschronized FullMode getInstance(){
        if(mFullMode==null){
            mFullMode=new FullMode;
        }
        return mFullMode;
    }
    */
    public static FullMode getInstance(){ 
        if(mFullMode==null){
            // 同步代码块用的锁是单例的字节码文件对象,且只能用这个锁  
            synchronized (FullMode.class) {  
                if (mFullMode == null) {  
                    mFullMode=new FullMode();  
                }  
            }  
        }
        return mFullMode;
    }
}

7、编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 
import java.util.List;

public class Book implements Comparable {
	private String name;
	private float price;
	
    public Book(String name,float price){
    	this.name = name;
    	this.price = price;
	}
	public static void main(String[] args){
    	List<Book> list = new ArrayList<Book>();
    	Book b1 = new Book("Java基础教程",29.0f);
    	Book b2 = new Book("数据库技术",29.0f);
    	Book b3 = new Book("C++基础教程",29.0f);
    	Book b4 = new Book("C++",27.0f);
    	Book b5 = new Book("C语言",26.0f);
    	Book b6 = new Book("数据结构",28.0f);
    	Book book = new Book("模式识别", 29.0f);
 
    	list.add(b6);
    	list.add(b5);
    	list.add(b4);
    	list.add(b3);
    	list.add(b2);
    	list.add(b1);
 
    	Collections.sort(list);
    	System.out.println("新书:"+book.name+"价格相同的是:");
    	for(int i = 0; i<list.size();i++){
        	if(book.compareTo(list.get(i))==0){
            	System.out.println(list.get(i).name);
        	}
    	}
    	System.out.println("价格是"+book.price);
	}
	@Override
	public int compareTo(Object o) {
    	Book b = (Book)o;
    	if(b.price>this.price){
        	return 1;
    	}else if(b.price<this.price){
        	return -1;
   		}else{
        	return 0;
    	}
	}
} 

8、小结:

今天是第二天写CSDN博文,从今天开始我将每天持续更新一篇博文,从明天开始将每天刷三道数据结构和算法题,并将它们更新到CSDN上,希望能够帮到一些小伙伴们!若有哪些不足的地方请多多指出!也欢迎各位小伙伴们提出宝贵的意见和建议!希望各位小伙伴能够技多不压身,在互联网的学习的道路上,互帮互助,共同成长,共同进步!加油!也愿我们都能在互联网的道路上愈走愈远!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值