Java 如果方法内部的运算符不';t返回正确的值 公共类EX02{ 今日公众假期; 公共静态字符串结果; /** *不变的。 *每三天喂一次虫子。 */ 公共静态最终int蠕虫喂食日=3; /** *不变的。 *每5天,在沙滩上沐浴一次。 */ 公共静态最终int_日=5; /** *不变的。 *需要说明的总天数。 */ 公共静态最终整数天=30; /** *程序的入口点。 *@param args来自命令行的参数。 */ 公共静态void main(字符串[]args){ getInstructionForCurrentDay(当前日期); //在此处的循环中调用并打印getInstructionForCurrentDay 对于(currentDay=1;currentDay

Java 如果方法内部的运算符不';t返回正确的值 公共类EX02{ 今日公众假期; 公共静态字符串结果; /** *不变的。 *每三天喂一次虫子。 */ 公共静态最终int蠕虫喂食日=3; /** *不变的。 *每5天,在沙滩上沐浴一次。 */ 公共静态最终int_日=5; /** *不变的。 *需要说明的总天数。 */ 公共静态最终整数天=30; /** *程序的入口点。 *@param args来自命令行的参数。 */ 公共静态void main(字符串[]args){ getInstructionForCurrentDay(当前日期); //在此处的循环中调用并打印getInstructionForCurrentDay 对于(currentDay=1;currentDay,java,Java,问题是“getInstructionForCurrentDay(int currentDay)”在Main方法中不返回所需的值。我做错了什么?你的 public class EX02 { public static int currentDay; public static String result; /** * Constant. * Every 3 days, feed worms. */ public static final int WORM_FEEDING_DAY = 3;

问题是“getInstructionForCurrentDay(int currentDay)”在Main方法中不返回所需的值。我做错了什么?

你的

public class EX02 {

public static int currentDay;
public static String result;

/**
 * Constant.
 * Every 3 days, feed worms.
 */
public static final int WORM_FEEDING_DAY = 3;

/**
 * Constant.
 * Every 5 days, bathe in sand.
 */
public static final int BATHING_DAY = 5;

/**
 * Constant.
 * Total number of days for which instructions are needed.
 */
public static final int NUMBER_OF_DAYS = 30;

/**
 * Entry point of the program.
 * @param args Arguments from command line.
 */
public static void main(String[] args) {

    getInstructionForCurrentDay(currentDay);
    // call and print getInstructionForCurrentDay inside a loop here
    for (currentDay = 1; currentDay < NUMBER_OF_DAYS +1; currentDay++) {
        currentDay = 30 - (NUMBER_OF_DAYS - currentDay);

        System.out.println("DAY " + currentDay + result);
    }


    System.out.println("Can't fly back in time");

}



/**
 * Return instruction for given day.
 * @param currentDay number of day to print instructions for.
 */
public static String getInstructionForCurrentDay(int currentDay) {

    if (currentDay % 3 == 0){
        result = ":feed worms";
    }
    else if (currentDay % 5 == 0){
        result = ":time to bath";
    }
    else if (currentDay % 5 == 0 && currentDay % 3 ==0  ){
        result = ":glide";
    }
    else if (currentDay % 3 !=0 || currentDay % 5 != 0) {
        result = ":give fruit and water";
    }

    return result;
}
}
先有条件,否则永远达不到

除此之外,您还应该为currentDay(currentDay)分配
getInstructionForCurrentDay的结果指定给该变量,并且应在循环内调用
getInstructionForCurrentDay(currentDay)
,因为
currentDay
仅在循环内指定

if (currentDay % 5 == 0 && currentDay % 3 ==0  )
//在此处的循环中调用并打印getInstructionForCurrentDay
对于(currentDay=1;currentDay<天数+1;currentDay++){
currentDay=30-(天数-currentDay);
结果=获取当前日期的指令(当前日期);
系统输出打印项次(“日”+当前日+结果);
}
...
公共静态字符串getInstructionForCurrentDay(int currentDay){
如果(当前日期%5==0&¤tDay%3==0){
结果=“滑动”;
}
否则如果(当前日期%3==0){
结果=“:喂虫”;
}
否则如果(当前日期%5==0){
结果=“洗澡时间”;
}
否则{
结果=“:给水果和水”;
}
返回结果;
}

在实例化方法之前,您正在将
currentDay
传递到方法中,因此您实际上是在将
0
传递到方法中

因此,所有if语句条件都从未满足,因此
result
也从未给定值,因此不会返回所需的值

相反,我相信你想这样做:

// call and print getInstructionForCurrentDay inside a loop here
for (currentDay = 1; currentDay < NUMBER_OF_DAYS +1; currentDay++) {
    currentDay = 30 - (NUMBER_OF_DAYS - currentDay);
    result = getInstructionForCurrentDay(currentDay);
    System.out.println("DAY " + currentDay + result);
}

...

public static String getInstructionForCurrentDay(int currentDay) {

    if (currentDay % 5 == 0 && currentDay % 3 ==0  ){
        result = ":glide";
    }
     else if (currentDay % 3 == 0){
        result = ":feed worms";
    }
    else if (currentDay % 5 == 0){
        result = ":time to bath";
    }
    else {
        result = ":give fruit and water";
    }

    return result;
}
for(currentDay=1;currentDay<天数+1;currentDay++)
{        
getInstructionForCurrentDay(当前日期);
系统输出打印项次(“日”+当前日+结果);
currentDay=30-(天数-currentDay);
}

谢谢,我是这样解决的:

for (currentDay = 1; currentDay < NUMBER_OF_DAYS +1; currentDay++)   
{        
    getInstructionForCurrentDay(currentDay);
    System.out.println("DAY " + currentDay + result);
    currentDay = 30 - (NUMBER_OF_DAYS - currentDay);
}
公共类EX02{
/**
*恒定。每3天喂一次虫子。
*/
公共静态最终int蠕虫喂食日=3;
/**
*恒定。每5天,在沙滩上沐浴一次。
*/
公共静态最终int_日=5;
/**
*常量。需要说明的总天数。
*/
公共静态最终整数天=30;
/**
*程序的入口点。
*
*@param args
*来自命令行的参数。
*/
公共静态void main(字符串[]args){
//在此处的循环中调用并打印getInstructionForCurrentDay
if(天数<1){
System.out.println(“不能飞回时间”);
系统出口(0);
}

对于(int currentDay=1;currentDay
String str=getInstructionForCurrentDay(currentDay);
什么是
result
?它没有在代码示例中声明…@fge:它是-代码格式不正确:(
currentDay
只包含一个零值,而不是一无所有。是的,很抱歉,忽略了整数不能为null并默认为0的事实。
public class EX02 {
/**
 * Constant. Every 3 days, feed worms.
 */
public static final int WORM_FEEDING_DAY = 3;
/**
 * Constant. Every 5 days, bathe in sand.
 */
public static final int BATHING_DAY = 5;
/**
 * Constant. Total number of days for which instructions are needed.
 */
public static final int NUMBER_OF_DAYS = 30;
/**
 * Entry point of the program.
 *
 * @param args
 *            Arguments from command line.
 */
public static void main(String[] args) {
    // call and print getInstructionForCurrentDay inside a loop here
    if (NUMBER_OF_DAYS < 1) {
        System.out.println("Can't fly back in time");
        System.exit(0);
    }
    for (int currentDay = 1; currentDay <= NUMBER_OF_DAYS; currentDay++) {
        System.out.println("Day " + currentDay + ": "
                + getInstructionForCurrentDay(currentDay));
    }
}
/**
 * Return instruction for given day.
 *
 * @param currentDay
 *            number of day to print instructions for.
 */
 public static String getInstructionForCurrentDay(int currentDay) {
    String result = "";
    if (currentDay % WORM_FEEDING_DAY == 0 && currentDay % BATHING_DAY == 0)
        result = "glide in wind";
    else if (currentDay % WORM_FEEDING_DAY == 0)
        result = "feed worms";
    else if (currentDay % BATHING_DAY == 0)
        result = "bathe in sand";
    else
        return "give fruit and water";
    return result;
}