使用java中,面向对象封装+继承的方法算题

1.第一种:给定一行字符,逆序输出此字符串(空格.数字不输出),如“ab 23,(4 cd”输出“dc(,ba”。(要求:使用面向对象封装+继承

class Bu
{
    private String str;
    public Bu(){}
    public Bu(String str){
        this.str = str;
    }
    public String getStr(){
        return str;
    }
    public void setStr(String str){
        this.str = str;
    }
    public String getInfo(){
        return str;
    }
}
class Rvs extends Bu //负责翻转
{
    public Rvs(){}
    public Rvs(String str){
        super(str);
    }
    public void m(){ //给定字符串,逆序输出字符串       String temp = ""; //定义新的字符串变量负责接收逆序后的字符串
        char[] chs = super.getStr().toCharArray();
        for(int i = chs.length-1;i >= 0;i--){
            temp += chs[i];
        }
        super.setStr(temp);
    }
}
class Oth extends Rvs //去掉数字和空格
{
    public Oth(){}
    public Oth(String str){
        super(str);
    }
    public void m2(){
        String temp = "";
        char[] chs = super.getStr().toCharArray(); //先去掉数字
        for(int i = 0;i < chs.length;i++){
            if(chs[i] >= ‘0‘ && chs[i] <= ‘9‘){
                continue;
            }
            temp += chs[i];
        }
        temp = temp.replace(" ",""); //再去空格,用replace()方法
        super.setStr(temp);
    }
}
class Statt
{
    public static void main(String[] args)
    {
        //Rvs r = new Rvs("4m 897ou // ");
        //r.m();
        //System.out.println(r.getInfo());
        Oth oth = new Oth("4m 897ou // ");
        oth.m(); //字符串的逆序
        oth.m2(); //逆序后字符串去掉空格和数字
        System.out.println(oth.getInfo()); //最后输出是getInfo()内容

    }
}

2.第二种:输入数字n,是奇数n就变为3n+1,是偶数就是n/2,经过若干次这样的变换,一定会使n变为1,求输出变换的次数,并要求次数是

除以3的余数 (要求:使用面向对象封装+继承

package com.oracle.acm.prac;

class X{
	private int n;
	private int count; //次数
	public X(){
		count=0;
	}
	public X(int n){
		count=0;
		this.n=n;
	}
	public void changeNum(){
		//若n为奇数,则将n变为3n+1,否则变为n的一半
		if(n%2!=0){
			n=3*n+1;
		}else{
			n=n/2;
		}
	}
	public int getChangeCount(){
		//经过若干次这样的变换,一定会使n变为1.求输出变换的次数
		while(n!=1){
			this.changeNum();
			count++;
		}
		return count%3; //要求次数要对3取余
	}
}
public class Demo10 {
	public static void main(String[] args) {
		X x=new X(2);
		System.out.println(x.getChangeCount());
	}
}

/**给定一行字符,逆序输出此字符串(空格.数字不输出),如“ab 23,(4 cd”输出“dc(,ba”。要求:使用面向对象封装+继承 */
class Bu{private String str;public Bu(){}public Bu(String str){this.str = str;}public String getStr(){return str;}public void setStr(String str){this.str = str;}public String getInfo(){return str;}}class Rvs extends Bu{public Rvs(){}public Rvs(String str){super(str);}public void m(){String temp = "";char[] chs = super.getStr().toCharArray();for(int i = chs.length-1;i >= 0;i--){temp += chs[i];}super.setStr(temp);}}class Oth extends Rvs{public Oth(){}public Oth(String str){super(str);}public void m2(){String temp = "";char[] chs = super.getStr().toCharArray();for(int i = 0;i < chs.length;i++){if(chs[i] >= ‘0‘ && chs[i] <= ‘9‘){continue;}temp += chs[i];}temp = temp.replace(" ","");super.setStr(temp);}}class Statt {public static void main(String[] args) {//Rvs r = new Rvs("4m 897ou // ");//r.m();//System.out.println(r.getInfo());Oth oth = new Oth("4m 897ou // ");oth.m();oth.m2();System.out.println(oth.getInfo());
} }

原文地址:https://www.cnblogs.com/lxy151/p/8178313.html

时间: 2024-12-30 03:09:47

使用java中,面向对象封装+继承的方法算题的相关文章

Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图)

Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图)最近进行数据库操作,遇到一个问题,就是大量删除一个数据表中的数据后,由于设定了id是自增的,导致再插入时,默认生成的id会很大,这个时候想要再次插入新的数据,应该怎么办呢?1.明确目前最后一个id的大小select id from tags order by id DESC limit 0,1; 假设返回的是9,则设置数据表从10开始自增 2.修改这个数据表从10开始自增alter table tags auto_increme

php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个具体的个体 所以,面向对象即我们专注对象来处理问题,通过从一个个具有属性和功能的类中拿到对象来处理问题. 下面我们再来细说下面向对象的三大特征:继承/封装/多态 一.继承 在PHP中我们主要通关E

Java中各种(类、方法、属性)访问修饰符与修饰符的说明

类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所有类访问(使用),其他项目若想使用本项目中的类,必须将本项目打包为jar包,然后加入到classpath中 public类必须定义在和类名相同的同名文件中 (default) 只能被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 修饰符 名称

为什么Java中有些接口没有任何方法

由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的定义,没有方法的实现.接口中的所有方法都是抽象的.接口中成员的作用域修饰符都是public,接口中的常量值默认使用public static final修饰.由于一个类可以实现多个接口,因此通常可以采用实现多个接口的方式来间接的达到多重继承的目的. 在Java语言中,有些接口内部没有声明任何方法,也

Java 中extends与implements使用方法 (转载)

转自:http://blog.csdn.net/chen_chun_guang/article/details/6323201 初学Java语言, 代码中的extends和implements让我感到很迷惑,现在终于弄明白它们之间的区别和用法了. //定义一个Runner接口 public inerface Runner { int ID = 1; void run (); } //定义一个interface Animal,它继承于父类Runner interface Animal extend

将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed income", "futures", "options"}; List<String> assetList = Arrays.asList(asset);

Java中的equals和hashCode方法

本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法. equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来判断放入的对象是否重复.这里我们首先要明白一个问题: equals()相等的两个对象,hashcode()一定相等,equals()不相等的两个对象,却并不能证明他们的h

JAVA中Runtime类以及exec()方法,Process的使用

package ioTest.io1; /* * Runtime:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. * 这也是jvm实现跨平台的一个重要原因. * 可以通过 getRuntime 方法获取当前运行时. * API分析: * public class Runtime extends Object * 每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. * 可以通过 getRuntime 方法获

java中数组有没有length()方法?string没有lenght()方法?

java中数组有没有length()方法,求数组的长度可以使用数组的length属性. int[] arr={1,2,3,4,5}; int length=arr.length;//求数组的长度 ---------------------------------------------------------------------------------------- String 有length()方法,用来求字符串的长度 String  str="Hello"; int leng