【问题标题】:Java - public static double not returningJava - 公共静态双精度不返回
【发布时间】:2018-04-30 15:46:52
【问题描述】:

我正在尝试从零开始学习 Java。我有一个练习,在重新阅读后我找不到为什么不起作用。在 Google 和 StackOverflow 上进行研究返回零结果...

主要目标是通过乘以一个数字将美元转换为比塞塔。我必须使用两个函数并在“main”上调用它们。

我的问题是“convertToPesetas”没有采用“askDollars”的返回值。谁能递给我一根绳子?

import java.util.Scanner;

public class Converter
{
    public static void main(String[] args){        
        askDollars();
        convertToPesetas();
    }       

    public static double askDollars(){
        System.out.println("Type the quantity of dollars:");
        Scanner keyboard= new Scanner(System.in);
        double dollars= keyboard.nextDouble();   
        System.out.println("Dollars: "+dollars);
        return dollars;        
    }
    public static double convertToPesetas(double dollars){        
        double pesetas = pesetas*166.386;        
        System.out.println(dollars+ "€ equals to: "+pesetas+" pesetas");
        return pesetas;
    }

}

【问题讨论】:

  • 这甚至无法编译,但您认为不包括错误消息是一个好问题?
  • 在您的 #convertToPesetas 方法中靠近第一行的右侧,真的看起来。此外,您必须使用从 #ask... 方法返回的值,并将它们传递给 #convert... 方法。

标签: java static public


【解决方案1】:

因为您没有存储或提供该值:

askDollars();
convertToPesetas();

将返回值保存在一个变量中,并将该变量传递给下一个方法:

double dollars = askDollars();
convertToPesetas(dollars);

注意:convertToPesetas 也返回一个值。你似乎不需要它来做到这一点。 但是,如果您将设计转向不同的方向,则可以使用它。作为下一步的学术练习,请考虑以下三种方法:

  1. 要求用户输入。
  2. 将美元价值转换为比塞塔价值。这没有输入或输出,只有一个方法参数和一个返回值。
  3. 打印输出。

每个方法都只做一件简单的事情。当你有了这个,你会发现第二种方法可以很容易地移动到其他对象等,因为它是完全独立的,不会以任何方式与用户界面耦合。

【讨论】:

  • 那仍然会丢弃convertToPesetas()的结果
  • @JimGarrison:确实如此,是的。虽然程序的逻辑似乎并不需要它。
  • 这就是修复我的代码的原因!我不知道如何将变量传递给下一个方法。我知道 convertToPesetas();必须作为参数传递(我在需要执行此操作的地方编写了 bash 脚本,但我不必进行变量赋值)。 """作为你下一步的学术练习,考虑三种方法:"""我的练习需要你提到的三种方法,而且我已经做了它们,它对一切都有效。非常感谢,请原谅我的英语。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多