【问题标题】:loop into a variable循环到一个变量
【发布时间】:2015-09-07 08:05:21
【问题描述】:

我正在为我的 Java 类做一个问题,我希望你能指出我正确的方向,或者给我一个提示。

程序main使用了我在main外面写的方法。

程序将输入到 JOptionPane 中的变量放入方法中。

该方法获取这些变量,并通过“while”循环运行它们,并将结果返回给 main。

我遇到的问题是,让返回值回到主输出。

我想拥有

return fin;

回到main,这样就可以输出了。

部分问题是我必须使用不同的数据类型,特别是浮点数和双精度数,我似乎无法正确解析。

代码如下:

public static double Compound(int time,double rate,float init)
{
    double fin,capital;
    int counter;
    fin=capital;
    capital=0;
    counter=0;
    while (counter<time)
    {
        capital=init+(rate/100.0)*init;         
        counter++;          
    }
    return fin;



}

我知道我在某个地方搞砸了,但我不知道在哪里。

编辑编辑编辑

我设法让代码大部分工作。现在我只需要将变量插入到上面的代码中。

下面的代码是我用来进入上面的代码的。

教师希望所有输入都在一个窗口中。

我知道,将输入输入到方法中会让我感到困惑。

不管怎样,剩下的代码如下:

import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Pr50
{
public static void main(String[] args)
{
    JTextField time=new JTextField();
    JTextField interest=new JTextField();
    JTextField initial=new JTextField();
    Object[] fields={
        "Time to Maturity", time,
        "Interest rate", interest,
        "Initial deposit", initial
        };
    JOptionPane.showInputDialog(null, fields);


    int x;
    double fin,rate;
    float init;
    fin=money.Compound(5,10,5500);
}
}

编辑编辑编辑

我解决了这个问题,主要是,有点,不是真的。

我通过一个 JOptionPane 输出运行程序,然后得到 gobbeldygook。

import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Pr50
{
public static void main(String[] args)
{
    JTextField time=new JTextField();
    JTextField interest=new JTextField();
    JTextField initial=new JTextField();
    Object[] fields={
        "Time to Maturity", time,
        "Interest rate", interest,
        "Initial deposit", initial
        };
    JOptionPane.showInputDialog(null, fields);

    JOptionPane.showMessageDialog(null, "The value of the fund is: "+initial);


    /*int x;
    double fin,rate;
    float init;
    fin=money.Compound(5,10,5500);*/
}
}

我真的很想知道如何解决这个问题。

编辑编辑编辑

我需要从输入窗口中获取变量,但我收到一条错误消息,指出“JText 无法转换为 int。”

这是代码,总之它是邪恶的荣耀:

主要:

import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Pr50
{
public static void main(String[] args)
{
    fin=money.Compound(time,interest,initial);
    JTextField time=new JTextField();
    JTextField interest=new JTextField();
    JTextField initial=new JTextField();
    Object[] fields={
        "Time to Maturity", time,
        "Interest rate", interest,
        "Initial deposit", initial
        };
    JOptionPane.showInputDialog(null, fields);

    JOptionPane.showMessageDialog(null, "The value of the fund is: "+initial);


    int x;
    double fin,rate;
    float init;
    fin=money.Compound(time,interest,initial);
}
}

正在调用的方法:

public class money
{
public static double Compound(int time,double rate,float init)
{
    return init*Math.pow(1+(rate/100), time);
}
}

【问题讨论】:

  • 我真的不知道你在这里问什么...是编译错误还是运行时错误?
  • 你不应该返还资本而不是返还fin吗?
  • 如果我把程序的另一半放在上面会有帮助吗?这只是给我一个问题的部分。
  • 你的方法是做什么的?我的意思是,您只需将 fin 与资本相等并返回,因此 fin 将具有资本在那一刻的价值(垃圾价值)。你不应该返还资本吗?
  • 方法是使用上面的代码计算利息。我可以编辑帖子,向您展示程序的另一半。

标签: java methods while-loop main


【解决方案1】:

根据您的问题,我猜您正在尝试获取方法 Compound 返回的值。

使用JOptionPane 获取变量timerateinit 后,只需在main 方法中调用方法Compound。例如:

double compound = Compound(time, rate, init);
System.out.println("The answer is " + compound);

【讨论】:

  • 讲师说在程序中使用'float'数据类型作为初始值。
  • init 仍然在上面浮动。方法签名决定了它的参数必须是什么类型
  • 正如@BenKnoble 所说,init 仍处于“浮动”状态,除非您的讲师希望您明确指定。也许像fin=money.Compound(5,10,5500f);注意“f”
【解决方案2】:

该代码中有很多奇怪的东西,但在我看来,这就是你想要做的:

public float compound(int time, double rate, float init)
{
    return init * Math.pow(1 + (rate / 100), time);
}

【讨论】:

  • init 必须是浮点数据类型。
  • 那么它也返回一个浮点数是有意义的。除此之外,除了在某些边缘情况下会损失一些精度之外,这并不重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
相关资源
最近更新 更多