栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java---面向对象编程题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java---面向对象编程题

一、
设计一个名为MyPoint的类,表示一个带x坐标和y坐标的点。该类包含:
1.俩个带get的方法数据域x和y分别表示他们的坐标
2.一个创建点(0,0)的无参构造方法
3.一个创建特定坐标点的构造方法
4.一个名为distance的方法,返回从该点到MyPoint类型的指定点之间的距离
5.一个名为distance的方法,返回从该点到指定x和y坐标的指定点之间的距离

package Static;


public class Demo114 {
 public static void main(String[] args) {
MyPoint p1 = new MyPoint(3,3);
MyPoint p2 = new MyPoint(4,4);
  System.out.println(p1.distance(p2));
  System.out.println(p1.distance(0,0));

  double [] point1 = {1,2};
  double [] point2 = {3,4};
  double distance = distance(point1 , point2);
  System.out.println(distance);
 }
 public static double distance(double [] p1 ,double [] p2){
  return  Math.hypot(p1[0] - p2[0],p1[1] - p2[1]);
 }
}
//设计一个名为MyPoint的类,表示一个带x坐标和y坐标的点。该类包含:
class  MyPoint{
 private double x;
 public  double y;
 //2.一个创建点(0,0)的无参构造方法
 public MyPoint(){
  x =0;
  y =0;
  //this(0,0);
 }


 //3.一个创建特定坐标点的构造方法
public MyPoint(double x ,double y){
  this.x = x;
  this.y = y;
}

//4.一个名为distance的方法,返回从该点到MyPoint类型的指定点之间的距离
public double distance(MyPoint point){
//return Math.hypot(x - point.x, y - point.y);
return distance(point.getX(), point.getY());
}
//5.一个名为distance的方法,返回从该点到指定x和y坐标的指定点之间的距离
 public double distance(double x, double y){
  return  Math.hypot(this.x -x , this.y -y);
 }

//1.俩个带get的方法数据域x和y分别表示他们的坐标
 public double getX() {
  return x;
 }
 public double getY() {
  return y;
 }
}

二、
设计一个名为Queue的类用于存储整数,像栈一样,队列具有元素。在栈中,元素以“先进后出”
的方式获得,在对列里,元素以“先进先出”。该类包含
1.一个名为element 的int[] 类型的数据域,保存队列中的int值
2.一个名为size得数据域,保存队列中的元素个数
3.一个构造方法,使用默认的容量8来创建一个queue对象
4.方法enqueue(int v)用于将v加入到队列中
5.方法dequeue(),用于从对列中移除元素并返回该元素
6.方法empty(),如果队列是空的话,该方法返回ture
7.方法getSize(),返回队列的大小

package Static;

public class Demo115 {
 public static void main(String[] args) {
Queue queue = new Queue();
  System.out.println(queue);
  for(int i =1; i <10; i++){
   queue.enqueue(i);
  }
  System.out.println(queue);
  for (int i = 1; i <= 6 ; i++) {
   System.out.println(queue.dequeue());
   System.out.println(queue);
  }
 }
}
class Queue{
 private int size ;//队列中元素的个数
 private int capacity = 8;//队列容器的最小容器 默认
 private  int[] element;//队列容器用于存储元素 当data.lengh == size 表示队列已满
 public Queue(){
  element = new int[capacity];
  size = 0;
 }
 public  boolean isEmpty(){
  return size == 0;
 }
 public int Size(){
  return  size;
 }
 public void enqueue(int v){
  if(size == element.length){
   //扩容
   resize(element.length * 2);
  }
  element[size++] = v;
 }
public int dequeue(){
  if(isEmpty()){
   return -1;
  }
  int ret = element[0];
  for(int i =1 ;i < size; i++){
   element[i - 1] =element[i];
  }
  size--;
  //需要缩容
if(size >= element.length /4 && element.length > capacity){
 resize(element.length /2);
}
  return  ret;
}
 private void resize(int newlength) {
  int [] newelement = new int[newlength];
  for(int i =0;i < size ; i++){
   newelement[i] = element[i];
  }
  element = newelement;
 }
 public String toString(){//封装对象信息
  String s = "[";
  if(isEmpty()){
   s += "]";
  }else {
   for(int i =0 ; i < size; i++){
    if(i ==size -1 ){
     s = s + element[i] + "]";
    }else {
     s =  s + element[i] + ",";
    }
   }
  }
  return s;
 }
}

三、String类

package Static;
//String类
public class Demo117 {
 public static void main(String[] args) {
  char[] chars ={'a','b','c'};
  MyString s1 = new MyString(chars);
  MyString s2 = new MyString("ab");
  System.out.println(s1.compareTo(s2));
  MyString s3 = new MyString("ABCD1314shun");
  s3.show();
  MyString s4 =s3.toLowerCase();
  s4.show();
  s3.show();


  MyString s5 = new MyString("ABC");
  MyString s6 = new MyString("abc");
  System.out.println(s5.compareToIgnoreCase(s6));
  s5.concat(s6).show();

  MyString s7 = new MyString("123456");
  MyString s8 = new MyString("345");
  System.out.println(s7.contains(s8));

  MyString s9 = new MyString("xxxx.avi");
  MyString s10 = new MyString(".avi");
  System.out.println(s9.endWith(s10));

  MyString s11 = new MyString("abc");
  MyString s12 = new MyString("abc");
  System.out.println(s11.equals(s12));

  MyString s13 = new MyString("axc");
  MyString s14 = new MyString("abc");
  System.out.println(s13.equalsIgnoreCase(s14));

  MyString s15 = new MyString("123456456799");
  s15.replace('9','0').show();
 }
}
class MyString{
 //字符串本身就是一个字符数组 只不过我们不能在改数组中修改元素
 private char[]  data;
 public MyString(char[] chars){
//data = chars;错误的 外界的不指向内部
  data = new  char[chars.length];//做一个副本
  for (int i = 0; i < chars.length ; i++) {
   data[i] = chars[i];
  }
 }
 public MyString(String s){
  //变为自己的string
  data = new  char[s.length()];
  for (int i = 0; i = 'A' && c <= 'Z';
 }


 public void show(){
  for (int i = 0; i < data.length; i++) {
   System.out.print(data[i]);
  }
  System.out.println();
 }


 //int compareToIgnoreCase(String str)
 //按字典顺序比较两个字符串,忽略病例差异。
public int compareToIgnoreCase(MyString s){
  MyString temp1 = toLowerCase();
  MyString temp2 = s.toLowerCase();
  return temp1.compareTo(temp2);
}

//String concat(String str)
//将指定的字符串连接到该字符串的末尾。
public MyString concat(MyString s){
  char[] chars = new char[length() + s.length()];
  int index = 0;
 for (int i = 0; i < length(); i++) {
  chars[index++] = data[i];
 }
 for (int i = 0; i < s.length(); i++) {
  chars[index++] = s.chsrAt(i);
 }
 return new MyString(chars);
}

//boolean contains(CharSequence s)
//当且仅当此字符串包含指定的char值序列时才返回true
public boolean contains(MyString s){
  //KMP算法
 char[] k1 =data;
 char[] k2 =s.data;
 for (int i = 0; i <= k1.length - k2.length; i++) {
  if(k1[i] == k2[0]){
   int j = i + 1;
   for(int l =1;l< k2.length; l++, j++){
    if(k1[j] != k2[l]){
     return false;
    }
   }
   return true;
  }
 }
 return false;
}

//int compareTo(String anotherString)
//按字典顺序比较两个字符串。
public int compareTo(MyString s){
  int i = 0;
  int j = 0;
  while (true){
   if(chsrAt(i) == s.chsrAt(j)){
    i++;
    j++;
    if(i ==length()&& j== s.length()){
     return 0;
    }
    if(i < length() && j >= s.length() || i >= length() && j<= s.length()){
     return length() - s.length();
    }
   }else {
    return chsrAt(i) - s.chsrAt(j);
   }
  }
}

//boolean endsWith(String suffix)
//测试此字符串是否以指定的后缀结尾。
public boolean endWith(MyString s){
 //xxx.avi
 //.avi
 int i =length() - 1;
 int j = s.length() - 1;
 while (true){
  if(chsrAt(i) == s.chsrAt(j)){
   i--;
   j--;
   if(j < 0){
    return true;
   }
  }else {
   return false;
  }
 }
}

//boolean equals(Object anObject)
//将此字符串与指定对象进行比较。
public  boolean equals(MyString s){
  return compareTo(s) == 0;
}
//boolean equalsIgnoreCase(String anotherString)
//将此 String与其他 String比较,忽略案例注意事项
public boolean equalsIgnoreCase(MyString s){
  return compareToIgnoreCase(s) == 0;
}
//int indexOf(int ch)
//返回指定字符第一次出现的字符串内的索引。
//int indexOf(int ch, int fromIndex)
//返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
//int indexOf(String str)
//返回指定子字符串第一次出现的字符串内的索引。
//int indexOf(String str, int fromIndex)
//返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。
public int indexOf(char c){
 for (int i = 0; i < length(); i++) {
  if(chsrAt(i) == c){
   return i;
  }
 }
 return -1;
}

//String replace(char oldChar, char newChar)
//返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。
//String replace(CharSequence target, CharSequence replacement)
//将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列
public MyString replace(char oldChar ,char newChar){
  char[] chars = new char[length()];
  for (int i =0 ; i  < length(); i++){
   if(chsrAt(i) == oldChar){
    chars[i] = newChar;
   }else {
    chars[i] =data[i];
   }
  }
  return new MyString(chars);
}
public MyString replace(MyString oldString , MyString newString){
  return null;
}

//char charAt(int index)
//返回 char指定索引处的值。
 private char chsrAt(int index) {
 return data[index];
 }

 //int length()
 //返回此字符串的长度。
 public int length(){
  return  data.length;
 }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771147.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号