java - 逻辑 - 解释不同的输入

标签 java

基本上,不是从用户那里读取一个值并将其转换为日元。我想输入一串值并将每个值转换为日元。

例如,下面的代码将仅转换输入的一个值,直到输入零。那么程序将无法运行。

我如何让它采用一串浮点值,例如:

34.4 4.9 34.0 9.98 0

并将其转换为日元,同时在达到零时仍终止?

import java.util.Scanner;

public class P4Point27 {
    public static void main(String[] args) {
        String convert = "Enter Dollars to Convert to Yen (Enter '0' to Quit): ";
        Scanner in = new Scanner(System.in);

    System.out.print("Enter the Price of $1.00 Dollar in Japanese Yen: ");
    double dollarToYen = in.nextDouble();

    System.out.print(convert);
    double dollars = in.nextDouble();
    while (dollars != 0) {
    double price = dollars * dollarToYen;
        System.out.println("$" + dollars + " is " + price + " yen.");
        System.out.print(convert);
        dollars = in.nextDouble();
    }
    in.close();
}
}

输入:

9 8 7 0

输出:

Enter the Price of $1.00 Dollar in Japanese Yen: 9 8 7 0
Enter Dollars to Convert to Yen (Enter '0' to Quit): $8.0 is 72.0 yen.
Enter Dollars to Convert to Yen (Enter '0' to Quit): $7.0 is 63.0 yen.
Enter Dollars to Convert to Yen (Enter '0' to Quit): 

如您所见,它忽略了 9,并且还不断重新打印状态消息。 我相信使用 do-while 循环可以修复缺少 9 或 for 循环的问题,但我不确定。

<小时/>

修复了代码!工作代码!

package assignment4;

import java.util.Scanner;

public class P4Point27 {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.print("Enter the Price of $1.00 Dollar in Japanese Yen: ");
    double dollarToYen = in.nextDouble();

    System.out.print("Enter a String of Numbers Seperated by a Space and Terminated by a '0' to End: ");
    double dollars = in.nextDouble();
    while (dollars != 0) {
        while (dollars != 0) {
            double price = dollars * dollarToYen;
            System.out.println("$" + dollars + " is " + price + " yen.");
            dollars = in.nextDouble();
        }
        System.out.print("Enter a String of Numbers again or '0' to quit: ");
        dollars = in.nextDouble();
    }
    in.close();
}
}

最佳答案

它不会“错过”9。这就是它用作“1.00 美元日元”值的值。然后它正确地转换 8 (8 * 9 = 72) 和 7 (7 * 9 = 63),然后在看到 0 时退出。部分问题可能是重复打印“输入要转换的美元.. .”。由于每次执行循环时都会打印该消息,因此每次执行循环时该消息都会出现一次也就不足为奇了。

更新: System.out.print(convert); 是打印状态消息的代码。您应该安排您的代码,以便无论您希望消息出现多少次,都会执行该语句。如果您只想看到它一次,那么该语句不应出现在任何循环内,因为循环体(通常)会执行多次

关于java - 逻辑 - 解释不同的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460821/

相关文章:

java - 当我单击按钮打开此 Activity 时,它会关闭

java - 扩展 AlertDialog

java - 使用 ResponseBody 并返回 Model 类实例的 Controller 方法上的奇怪 Spring MVC 4.2.x 行为

java - 无法解决匹配的构造函数 - 重写 BaseRepository 类

java - 同步BlockingQueues的ArrayList

java - 自定义输入过滤器接受正则表达式中的数值

java - 在 Android 字符串中操作数据库输出

java - Model-View-Presenter被动 View : bootstraping - who displays the view initially?

java - 追踪至: Using JSch to SFTP when one must also switch user

java - 测试确实在本地的 Selenium 网格上运行正常)