繁体   English   中英

为什么我的Java程序不能正常工作? 它不允许我输入字符串语句小数位数。

[英]Why isn't my java program working?? It doesn't allow me to input my string statement scale.

这是我编写的将华氏温度转换为摄氏温度,反之亦然的代码。 老师说我们必须使用switch语句。

import java.util.Scanner;
public class hope 
{
    public static void main(String[]args)
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter the number of degrees: ");
        double degrees = keyboard.nextDouble();
        System.out.println("Enter the scale: ");
        String scale = keyboard.nextLine();

        switch(scale)
        {
        case "F":
        case "f":
            double fahrenheit = (degrees - 32) * .5556;
            System.out.println(degrees + scale + " equals " + fahrenheit + " degrees celcius");
            break;
        case "C":
        case "c":
            double celcius = (degrees + 32) * 1.8;
            System.out.println(degrees + scale + " equals " + celcius + " degrees Fahrenheit");
            break;

        default:
            System.out.println("I don't know what you're talking about. Chaw. ");
            break;

        }
    }

}

问题是,当我运行它时,程序允许我输入度数,然后显示打印语句,然后跳转到默认情况而不允许我输入比例。

您需要使用新行。 Scanner.nextDouble()仅将下一个标记读取为double,而没有行终止符。 阅读double之后,可以添加keyboard.nextLine()

double degrees = keyboard.nextDouble();
keyboard.nextLine();

或在输入行上使用Double.parseDouble(String)

String degreesString = keyboard.nextLine();
double degrees = Double.parseDouble(degreesString);

您输入的两倍之后的内容将由keyboard.nextLine();占用keyboard.nextLine();

因此,您必须在keyboard.nextLine();keyboard.nextLine(); 更多。

double degrees = keyboard.nextDouble();
keyboard.nextLine();
System.out.println("Enter the scale: ");
String scale = keyboard.nextLine();

如果“扫描仪”输入实用程序不是强制性的,我建议您使用BufferedReader。

package com.tempcalculator;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class Main {

public static void main(String[] args) {
    String degrees = getInput("Degrees?");
    String scale = getInput("Scale?");

    switch (scale.charAt(0)) {
        case 'F':
        case 'f':
            double fahrenheit = (Double.parseDouble(degrees) - 32) * .5556;
            System.out.println(degrees + scale + " equals " + fahrenheit + " degrees Celsius");
            break;
        case 'C':
        case 'c':
            double celsius = (Double.parseDouble(degrees) + 32) * 1.8;
            System.out.println(degrees + scale + " equals " + celsius + " degrees Fahrenheit");
            break;
        default:
            System.out.println("Whoops! Error 404: Requested scale was not found. ");
            break;
    }
}


public static String getInput(String prompt) {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    System.out.print(prompt);
    System.out.flush();

    try {
        return in.readLine();
    } catch (IOException e) {
        return "Error: " + e.getMessage();
    }

}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM