java第四次作业

这篇博客涵盖了数据结构的基础实现,包括自定义栈类,用于计算二进制中1的个数的函数,以及寻找数组中唯一元素的方法。同时,还介绍了如何创建一个简单的猫类来存储猫的信息,并展示了自定义String类的构造和一些基本操作,如字符获取、长度计算和转换为小写。这些内容涉及编程基础知识和数据处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

public class Stack {
	private int[] data;
	private int top = -1;
	private static int capacity = 10;
	public Stack() {
		this(capacity);
	}
	public Stack(int capacity) {
		if (capacity < 0) {
			capacity = 0;
		}
		if (capacity > 100) {
			capacity = 100;
		}
		this.data = new int[capacity];
	}
	public void push(int e) {
		if (size() == data.length) {
			System.out.println(">>>栈已满,无法添加元素" + e);
			return;
		}
		data[++top] = e;
	}
	public int pop() {
		if (isEmpty()) {
			System.out.println(">>>栈为空,无法弹栈元素");
			return -1;
		}
		return data[top--];
	}
	public int peek() {
		if (isEmpty()) {
			System.out.println(">>>栈为空,无法获取栈顶元素");
			return -1;
		}
		return data[top];
	}
	public boolean isEmpty() {
		return top == -1;
	}
	public void clear() {
		top = -1;
	}
	public int size() {
		return top + 1;
	}
	public String toString() {
		if (isEmpty()) {
			return "[]";
		}
		String s = "[";
		for (int i = 0; i < size(); i++) {
			s += data[i];
			if (i == size() - 1) {
				s += "]";
			} else {
				s += ",";
			}
		}	
		return s;
	}
}

给定一个数字,求该数字的二进制的1的个数

public static int getNumber(int n){
        int res = 0;
        int t = n;
        while (t!=0){
            if((t&1)==1){
                res++;
            }
            t=t>>>1;
        }
        return res;
    }

给定一个数组,该数组中除了一个元素只出现了一次,其他元素都出现两次,找到这个没有重复的元素

public class demo4 {
	
	public static void main(String[] args) {
		int[] arr = {2,2,1,1,5};
		printf(arr);
	}
	private static void printf(int[] arr) {
		// TODO Auto-generated method stub
		int num = 0;
		for(int i = 0;i<arr.length;i++){
			num^=arr[i];
		}
		System.out.println(num);
	}
		 
}

给定一个数组,数组的元素共N+1个, 元素是从1到n的联系自然数,其中一个重复值,找到这个重复的元素

package zuoye;
import java.util.Set;
import java.util.HashSet;
public class demo4 {
	
	public static void main(String[] args) {
		int[] arr = {2,2,1,1,5};
		printf(arr);
	}
	private static void printf(int[] arr) {
		// TODO Auto-generated method stub
		Set<Integer> si = new HashSet<>();
		for (int i = 0; i < arr.length; i++) {
			int num = si.size();
			si.add(arr[i]);
			if (si.size()==num) {
				System.out.println(arr[i]);
			}
		}
	}
}

定义一个猫类(Cat),该猫有名字、性别、年龄、主人、皮毛

public class TestCat {

	public static void main(String[] args) {
		Master lbs = new Master();
		lbs.name = "离博士";
		lbs.age = 19;
		lbs.address = "重庆";
		lbs.gender = "男";
		
		Cat c1 = new Cat();
		c1.name = "小花";
		c1.color = "花色";
		c1.gender = "公";
		c1.age = 3;
		// 找到了主人
		c1.master = lbs;
		
//		System.out.println(c1.master.name);
//		System.out.println(c1.master.age);

		Cat c2 = new Cat();
		c2.name = "小黑";
		c2.color = "黑色";
		c2.gender = "母";
		c2.age = 2;
		// 找到了主人
		c2.master = lbs;
		
		// 从主人这个方向关联两只喵
		Cat[] cats = {c1, c2};
		lbs.cats = cats;
	}
}

Class58.自定义String类(类与对象,构造函数)

public class MyString {
	public char[] chars;

	public MyString(char[] chars) {
		this.chars = chars;
	}
	
	public MyString() {
		chars = new char[0]; 
	}
	
	public char charAt(int index) {
		if (index >= this.length()) {
			throw new RuntimeException("对不起,下标越界异常");
		}
		return chars[index];
	}
	public int length() {
		return chars.length;
	}
	public MyString substring(int begin, int end) {
		char[] substr = new char[end - begin];
		for (int i = 0; i < substr.length; i++) {
			substr[i] = chars[begin + i];
		}
		return new MyString(substr);
	}
	
	public MyString tolower(MyString s) {
		char[] substr = new char[this.chars.length];
		for (int i = 0; i < substr.length; i++) {
			char temp = this.chars[i];
			if (temp >= 65 && temp <= 90) {
				substr[i] = (char)(this.chars[i] + 32);
			} else {
				substr[i] = this.chars[i];
			}
		}
		return new MyString(substr);
	}
	
	public boolean equals(MyString s1) {
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != s1.charAt(i)) {
				return false;
			}
		}
		return true;
	}
	
	public static MyString valueOf(int i) { 
		String str = i + "";
		char[] substr = new char[str.length()];
		for (int j = 0; j < substr.length; j++) {
			substr[j] = str.charAt(j); 
		}
		return new MyString(substr);
	};
	
	
	public static void main(String[] args) {
		char[] arr = {'t', 'h', 'i', 's', ' ', 'a',  ' ', 'b', 'o', 'o', 'k'};
		MyString myString = new MyString(arr);
		System.out.println(myString.charAt(0));
		System.out.println(myString.charAt(5));
		System.out.println(myString.length());
		
		User u = new User();
		System.out.println(u.gender);
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值