面向对象程序设计之类和对象初级试题

本文通过两个示例展示了面向对象编程的应用,包括创建Recipe类来表示菜谱,实现按名称、菜系、时长和食材查询功能。同时,定义了一个Complex类用于复数运算,包括复数相加方法。在测试类中,创建了两个复数对象并展示了它们的和。
摘要由CSDN通过智能技术生成

面向对象程序设计之试题

类和对象

  1. 定义一个菜谱类Recipe用来存储某种菜的制作过程等相关信息,其属性包括:菜谱名称、菜系(如:川菜、湘菜等)、烹饪时长(分钟)、所需的多种食材(字符串数组类型,假设每种菜所需食材不会超过10种)、操作步骤,在main方法中定义一个数组存储5个菜谱的信息。

    要求:

(1)按名称模糊查询并输出符合条件的菜谱的所有信息,要求实现查找包含特定名称的菜谱信息的方法:searchRecipesContainName(Recipe[] recipes, String name),例如:希望找到所有名称中包含牛肉的菜谱,可以使用字符串类String类的contains方法,来判断某个字符串中是否包含某个子串。

输出格式:
在这里插入图片描述
(2)按菜系查询并输出符合条件的菜谱的所有信息,要求能够实现查找某个菜系的菜谱信息的方法:searchRecipes(Recipe[] recipes, String style),例如:希望查找所有湘菜的菜谱(可以使用字符串类String类的equals方法,来判断某个字符串是否与指定字符串相同),输出格式同上。

(3)查询烹饪时间小于某个时长的菜谱并输出,要求实现查找方法:searchRecipeLessThan(Recipe[] recipes, int time),例如:希望查找烹饪时长小于30分钟的菜谱,输出格式同上。

(4)查询包含某种食材的菜谱信息并输出,要求实现查找方法:searchRecipeContainsFood(Recipe[] recipes, String food),例如:希望查找包含西红柿的菜谱,输出格式同上。

提示:

(1)定义的菜谱类:包括属性、属性的getter、setter方法。

(2)类中其他方法可自由发挥,比如打印菜谱信息的方法(如print()或toString())

(3)自己定义包含main方法的类,类中定义4个static方法,分别用来实现要求中规定的4个方法

package www.wy.ch01;
import java.util.Arrays;
public class Recipe {

	private String name;//名称
	private String style;//菜系
	private int time;//时长
	private String[] materials;//食材
	private String step;//步骤
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStyle() {
		return style;
	}
	public void setStyle(String style) {
		this.style = style;
	}
	public int getTime() {
		return time;
	}
	public void setTime(int time) {
		this.time = time;
	}
	public String[] getMaterials() {
		return materials;
	}
	public void setMaterials(String[] materials) {
		this.materials = materials;
	}
	public String getStep() {
		return step;
	}
	public void setStep(String step) {
		this.step = step;
	}
	
	public void print() {
		System.out.println("菜谱名称:" + name);
		System.out.println("菜系:" + style);
		System.out.println("时长:" + time);
		System.out.print("所需食材:");
		for(String material : materials) {
			System.out.print(material + " ");
		}
		System.out.println();
		System.out.println("操作步骤:" + step);
	}
	
	
}
package www.wy.ch01;
public class Test {

	public static void main(String[] args) {
		Recipe[] recipes = new Recipe[5];
		Recipe recipe1 = new Recipe();
		recipe1.setName("酱牛肉");
		recipe1.setStyle("家常菜");
		recipe1.setTime(120);
		String[] materials1 = {"牛腱子","黄豆酱油","黄酒","冰糖"};
		recipe1.setMaterials(materials1);
		recipe1.setStep("1.准备好主要食材;2.加入食材慢炖两至三小时");
		recipes[0] = recipe1;
		Recipe recipe2 = new Recipe();
		recipe2.setName("红烧牛肉");
		recipe2.setStyle("家常菜");
		recipe2.setTime(120);
		String[] materials2 = {"牛腩","牛筋","生抽","冰糖"};
		recipe2.setMaterials(materials2);
		recipe2.setStep("1.准备好主要食材;2.加入食材慢炖两至三小时");
		recipes[1] = recipe2;
		Recipe recipe3 = new Recipe();
		recipe3.setName("农家小炒肉");
		recipe3.setStyle("湘菜");
		recipe3.setTime(10);
		String[] materials3 = {"青椒","红椒","酱油肉","葱"};
		recipe3.setMaterials(materials3);
		recipe3.setStep("1.准备好主要食材并切块;2.锅内倒少许的油后放入葱花爆香,然后加入食材翻炒");
		recipes[2] = recipe3;
		Recipe recipe4 = new Recipe();
		recipe4.setName("西红柿炒鸡蛋");
		recipe4.setStyle("家常菜");
		recipe4.setTime(10);
		String[] materials4 = {"西红柿","鸡蛋"};
		recipe4.setMaterials(materials4);
		recipe4.setStep("1.西红柿切块,鸡蛋打散;2.先炒鸡蛋,再加入西红柿");
		recipes[3] = recipe4;
		Recipe recipe5 = new Recipe();
		recipe5.setName("水煮鱼");
		recipe5.setStyle("川菜");
		recipe5.setTime(30);
		String[] materials5 = {"鲤鱼","黄豆芽"};
		recipe5.setMaterials(materials5);
		recipe5.setStep("1.处理鲤鱼;2.加入食材炖5分钟即可");
		recipes[4] = recipe5;
		
		searchRecipesContainName(recipes, "鱼");//根据名称模糊查询
//		searchRecipes(recipes, "湘菜");//根据菜系查询
//		searchRecipeLessThan(recipes, 30);//根据做饭的时间查询
//		searchRecipeContainsFood(recipes,"西红柿");//根据做饭所需食材查询
	}
	
	public static void searchRecipesContainName(Recipe[] recipes,
			String name) {
		for(int i = 0; i < recipes.length; i++) {
			if(recipes[i].getName().contains(name)) {
				recipes[i].print();
			}
		}
	}
	
	public static void searchRecipes(Recipe[] recipes, 
			String style) {
		for(int i = 0; i < recipes.length; i++) {
			if(recipes[i].getStyle().equals(style)) {
				recipes[i].print();
			}
		}
	}
	
	public static void searchRecipeLessThan(Recipe[] recipes, 
			int time) {
		for(int i = 0; i < recipes.length; i++) {
			if(recipes[i].getTime() < time) {
				recipes[i].print();
			}
		}
	}
	
	public static void searchRecipeContainsFood(Recipe[] recipes, 
			String food) {
		for(int i = 0; i < recipes.length; i++) {
			String[] foods = recipes[i].getMaterials();
			for(String f : foods) {
				if(f.equals(food)) {
					recipes[i].print();
				}
			}
		}
	}
}
  1. 定义一个复数类Complex类,该类需要满足以下条件:realPart表示复数的实数部分,imaginaryPart表示复数的虚数部分。

在该类中除了属性的getter、setter方法之外,还需要实现以下方法:

(1)一个Complex add(Complex anotherComplex)方法,将当前复数对象与形参复数对象相加,所得的结果仍然是一个复数值。

(2)一个Complex addAnther(int anotherReal, int anotherImaginary)方法,将当前复数对象与形参的实数和虚数部分表示的复数对象相加,所得结果仍然是一个复数。

(3)编写一个测试类,在main方法中创建两个复数1+2i和3+4i,并显示它们的和。

package com.homework0202;

public class Complex {

  private int realPart;
  private int imaginaryPart;
  public int getRealPart() {
  	return realPart;
  }
  public void setRealPart(int realPart) {
  	this.realPart = realPart;
  }
  public int getImaginaryPart() {
  	return imaginaryPart;
  }
  public void setImaginaryPart(int imaginaryPart) {
  	this.imaginaryPart = imaginaryPart;
  }
  
  public Complex add(Complex a) {
  	int r = realPart + a.getRealPart();
  	int i = imaginaryPart + a.getImaginaryPart();
  	Complex c = new Complex();
  	c.setRealPart(r);
  	c.setImaginaryPart(i);
  	return c; 
  }
  
  public Complex addAnther(int anotherReal, 
  		int anotherImaginary) {
  	int r = realPart + anotherReal;
  	int i = imaginaryPart + anotherImaginary;
  	Complex c = new Complex();
  	c.setRealPart(r);
  	c.setImaginaryPart(i);
  	return c; 
  }
  
  public String print() {
  	return realPart + "+" + imaginaryPart + "i";
  }
}
package com.homework0202;

public class Test {

	public static void main(String[] args) {
		Complex c1 = new Complex();
		c1.setRealPart(1);
		c1.setImaginaryPart(2);
		Complex c2 = new Complex();
		c2.setRealPart(3);
		c2.setImaginaryPart(4);
		Complex c3 = c1.add(c2);
		System.out.println(c1.print() + "加上" + c2.print());
		System.out.println("结果是:" + c3.print());
		Complex c4 = c1.addAnther(4, 6);
		System.out.println(c4.print());
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值