其实Java中的类和c语言中的函数很像,学过c语言的小伙伴可以比较着来学习!
Book类的设计
阅读测试程序,设计一个Book类。
函数接口定义:
class Book{}
该类有 四个私有属性
分别是 书籍名称
、 价格
、 作者
、 出版年份
,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是书籍名称
、 价格
、 作者
、 出版年份
。
裁判测试程序样例:
import java.util.*;
public class Main {
public static void main(String[] args) {
List <Book>books=new ArrayList<Book>();
Scanner in=new Scanner(System.in);
for(int i=0;i<5;i++)
{ String str=in.nextLine();
String []data=str.split(",");
Book book=new Book(data[0],Integer.parseInt(data[1]),data[2],Integer.parseInt(data[3]));
books.add(book);
}
System.out.println(totalprice(books));
}
/*计算所有book的总价*/
public static int totalprice(List <Book>books)
{ int result=0;
for(int i=0;i<books.size();i++){result+=books.get(i).getPrice();}
return result;
}
}
/* 请在这里填写答案 */
输入样例:
三体,100,无名氏,1998
上下五千年,50,编辑部,2015
海底世界,50,无名氏2,2000
三体1,100,无名氏3,2017
三体3,100,无名氏4,1998
输出样例:
400
以下是代码详解!
class Book
{
private String name;
private int price;
private String author;
private int year; //类似于c语言自己写函数时需要用到的一些变量
Book( String name,int price,String author,int year)
{
this.name=name;
this.price=price;
this.author=author;
this.year=year;
} /*这个是根据题目要求里面的这条语句来写的:Book book=new
Book(data[0],Integer.parseInt(data[1]),data[2],Integer.parseInt(data[3]));,题目要求中括号内写了几个变量,这里的括号内也写对应的变量即可*/
public void setName(String name){
this.name=name;
} //建立
public String getName(){
return name;
} //获取
public void setPrice(int price){
this.price=price;
}
public int getPrice(){
return price;
}
public void setAuthor(String author){
this.author=author;
}
public String getAuthor(){
return author;
}
public void setYear(int year){
this.year=year;
}
public int getYear(){
return year;
}
}
这里简单介绍一下this的含义
在 Java 中, this 是一个关键字,用于引用当前对象。
它具有以下主要用途:
1. 明确对象自身:在方法内部使用 this 可以明确地表示对当前对象的属性或方法的引用。
2. 解决参数命名冲突:当方法的参数名与类的成员变量名相同时,可以使用 this 来区分。
3. 在构造器中调用其他构造器:可以通过 this 关键字在一个构造器中调用其他构造器。
Person类
构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息
输入描述:
姓名(name),性别(sex)和年龄(age)
输出描述:
用户信息
裁判测试程序样例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name = scan.next();
String sex = scan.next();
int age = scan.nextInt();
Person p = new Person();
p.setName(name);
p.setSex(sex);
p.setAge(age);
p.print();
scan.close();
}
}
/* 你的代码被嵌在这里 */
输入样例:
在这里给出一组输入。例如:
Lucy male 23
输出样例:
在这里给出相应的输出。例如:
name:Lucy; sex:male; age:23
其实本题主要要求我们写出一个打印函数
class Person
{
private String name;
private String sex;
private int age;
Person() //Person p = new Person();这是原题的语句,通过上一个题,大家都知道原因了吧,
{ //虽然没有参数,但是不能省略这条语句
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setSex(String sex)
{
this.sex=sex;
}
public String getSex()
{
return sex;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
public void print()
{
System.out.print("name:"+name+"; "+"sex:"+sex+"; "+"age:"+age);
}
}
设计一个矩形类Rectangle
设计一个名为Rectangle的类表示矩形。这个类包括:
两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.
一个无参构造方法。
一个为width和height指定值的矩形构造方法。
一个名为getArea()的方法返回这个矩形的面积。
一个名为getPerimeter()的方法返回这个矩形的周长。
类名为:
Rectangle
裁判测试程序样例:
import java.util.Scanner;
/* 你的代码将被嵌入到这里 */
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double w = input.nextDouble();
double h = input.nextDouble();
Rectangle myRectangle = new Rectangle(w, h);
System.out.println(myRectangle.getArea());
System.out.println(myRectangle.getPerimeter());
input.close();
}
}
输入样例:
3.14 2.78
输出样例:
8.7292
11.84
通过以上两个例子,我们可以看出来这个题目主要就是设计函数求矩形面积和周长,以及有参和无参方法
class Rectangle
{
double width;
double height;
Rectangle(){
width=1.0;
height=1.0;
} //无参方法
Rectangle(double newWidth,double newHeight)
{
width=newWidth;
height=newHeight;
} //Rectangle myRectangle = new Rectangle(w, h);有参方法
double getArea()
{
return width*height;
} //求面积
double getPerimeter()
{
return 2*(width+height);
} //求周长
}
定义一个股票类Stock
定义一个名为Stock的股票类,这个类包括:一个名为symbol的字符串数据域表示股票代码。一个名为name的字符串数据域表示股票名称。一个名为previousClosingPrice的double数据域,它存储前一日的股票交易价格。一个名为currentPrice数据域,它存储当前的股票交易价格。创建一个有特定代码和名称的股票的构造方法。一个名为changePercent()方法返回从previousClosingPrice变化到currentPrice的百分比。
###类名为:
stock
裁判测试程序样例:
import java.util.Scanner;
/* 你提交的代码将被嵌入到这里 */
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String symbol1=input.next();
String name1=input.next();
Stock stock = new Stock(symbol1, name1);
stock.previousClosingPrice = input.nextDouble();
// Input current price
stock.currentPrice = input.nextDouble();
// Display stock info
System.out.println(stock.name+"price changed: " + stock.changePercent() * 100 + "%");
input.close();
}
}
输入样例:
002594
比亚迪
56.98
55.40
输出样例:
比亚迪股价涨跌: -2.77290277290277%
从previousClosingPrice变化到currentPrice的百分比其实就是用currentPrice减去previousClosingPrice的差除以previousClosingPrice。
class Stock
{
String symbol;
String name;
double previousClosingPrice;
double currentPrice;
Stock(String newSymbol,String newName)
{
symbol=newSymbol;
name=newName;
} // Stock stock = new Stock(symbol1, name1);有参方法
public void setPreviousClosingPrice(double previousClosingPrice)
{
this.previousClosingPrice=previousClosingPrice;
}
public double getPreviousClosingPrice()
{
return previousClosingPrice;
}
public void setCurrentPrice(double CurrentPrice)
{
this.currentPrice=currentPrice;
}
public double getCurrentPrice()
{
return currentPrice;
} //以上写的public都可以不用写,写在这里是方便获取
double changePercent()
{
return ((currentPrice-previousClosingPrice)/previousClosingPrice); //本题关键在这
}
}
公里英里转换
创建 Java 类Conversion,实现两个静态方法,能进行公里、英里转换。
Conversion类包括:
1个私有静态常量 N=0.621
2个公有静态方法 getMile(double k),getKilometer(double m),两个方法的返回值都是double型。
方法应实现如下功能:
getMile(double k)方法功能:将参数k保存的公里数转换成英里,并返回英里数。
getKilometer(double m)方法功能:将参数m保存的英里数转换成公里,并返回公里数。
转换规则:1 kilometre(公里) = 0.621 mile(英里)
题目这里给的很清楚,大家根据这个公式就很轻松写出相应的方法啦!
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//键盘输入公里数
double a = sc.nextDouble();
//转换为英里数并输出
System.out.printf("%.2f ", Conversion.getMile(a));
//键盘输入英里数
double b = sc.nextDouble();
//转换为公里数并输出
System.out.printf("%.2f", Conversion.getKilometer(b));
sc.close();
}
}
/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
10 10
输出样例:
在这里给出相应的输出。例如:
6.21 16.10
class Conversion
{
private static final double N=0.621;
double k;
double m;
Conversion(){
} //无参方法,这里可以不写这条语句
public static double getMile(double k) //转为英里
{
return k*N;
}
public static double getKilometer(double m)//转为公里
{
return m/N;
}
}