gpt4 book ai didi

java - 一旦计数器达到某个值,就递增数组

转载 作者:行者123 更新时间:2023-12-01 11:55:23 25 4
gpt4 key购买 nike

我正在编写一个方法,一旦调用该方法(通过 meals 变量进行计数),该方法就会在 mSize 数组中向上移动一个空格。

 class Dog {

String mSize[] = {"tiny", "small", "average", "large"};

int dogSize;

int meals;


final float WEIGHT_GAIN = 0.25f;

float mWeight;

/*
* feed
*
* Feeds the Dog.
*
* Side-effect: 1. The Dog gains weight, specifically WEIGHT_GAIN
* 2. Every 3 meals, the Dog grows to a larger size, if
* possible
* i.e. "tiny" (3 meals later ->) "small" (3 meals later ->)
* "average" (3 meals later ->) "large"
* the Dog cannot exceed the "large" size or shrink smaller than
* "tiny"
* @return nothing
*/

void feed(){
mWeight += WEIGHT_GAIN;
if (++meals == 3 && getSize()!= mSize[mSize.length-1]){

dogSize ++;
getSize();
}
}

编辑:

meals 必须是一个成员变量,并且我没有使用 getSize 方法,该方法返回 mSize[dogSize] 不确定如果我应该在某个地方使用 setSize

 /*
* getSize
*
* @return the size of the dog (String)
*/
/************************************************
* ASSIGNMENT:
* Create the getSize method
/************************************************/
String getSize(){
return mSize[dogSize];
}
/*
* setSize
*
* Sets the size of the Dog
*
* @param size the new size of the Dog (String)
* @return nothing
*/
/************************************************
* ASSIGNMENT:
* Create the setSize method
/************************************************/
void setSize(String size){
mSize[dogSize] = size;
}

在主方法中测试:

// Test feed
try {
float weight = (Float) getWeight.invoke(dog, new Object[0]);
feed.invoke(dog, new Object[0]);
if (((Float) getWeight.invoke(dog, new Object[0])) <= weight) {
System.out.println("Your Dog should have gained some weight");
System.exit(1);
}
feed.invoke(dog, new Object[0]);
feed.invoke(dog, new Object[0]);
if (!"average".equals(getSize.invoke(dog, new Object[0]))) {
System.out.println("Your Dog didn't grow to average after 3 meals :(");
System.exit(1);
}
feed.invoke(dog, new Object[0]);
feed.invoke(dog, new Object[0]);
feed.invoke(dog, new Object[0]);
if (!"large".equals(getSize.invoke(dog, new Object[0]))) {
System.out.println("Your Dog didn't grow to large after 3 more meals :(");
System.exit(1);
}

feed.invoke(dog, new Object[0]);
feed.invoke(dog, new Object[0]);
feed.invoke(dog, new Object[0]);
if (!"large".equals(getSize.invoke(dog, new Object[0]))) {
System.out.println("Your Dog should stay large if it keeps feeding like this");
System.exit(1);
}
} catch (Exception e) {
System.out.println("Something went wrong with " + feed.getName());
System.exit(1);
}

最佳答案

我相信你想要类似的东西

class Dog {
static String mSize[] = { "tiny", "small", "average", "large" };
int dogSize = 0;
int meals = 0;

void feed() {
if (++meals % 3 == 0) {
dogSize++;
}
}

@Override
public String toString() {
return String.format("Weight = %.2f, Meals = %d, Size = %s",
meals / 3.0, meals, mSize[dogSize]);
}
}

然后进行测试,例如

public static void main(String[] args) {
Dog d = new Dog();
for (int i = 0; i < 12; i++) {
System.out.println(d);
d.feed();
}
}

输出为

Weight = 0.00, Meals = 0, Size = tiny
Weight = 0.33, Meals = 1, Size = tiny
Weight = 0.67, Meals = 2, Size = tiny
Weight = 1.00, Meals = 3, Size = small
Weight = 1.33, Meals = 4, Size = small
Weight = 1.67, Meals = 5, Size = small
Weight = 2.00, Meals = 6, Size = average
Weight = 2.33, Meals = 7, Size = average
Weight = 2.67, Meals = 8, Size = average
Weight = 3.00, Meals = 9, Size = large
Weight = 3.33, Meals = 10, Size = large
Weight = 3.67, Meals = 11, Size = large

关于java - 一旦计数器达到某个值,就递增数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28492338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com