如何将循环增加10而不是1?

时间:2015-09-29 03:32:19

标签: java loops

这是我现在的代码:http://ideone.com/PfXNQc

import java.util.Scanner;

public class Temperature
{

    public static double convertFtoC(double F)
    {
        return (F-32)*5/9;
    }

    public static void main(String[] args)
    {
        double F; //Stores Farenheit
        double C; //Stores Celsius

        Scanner keyboard = new Scanner(System.in);

        System.out.print("Enter a temperature in Fahrenheit: "); //Enter in Farenheit
        F = keyboard.nextDouble(); //Stores Farenheit

        System.out.println("The temperature in Celsius is: " + convertFtoC(F)); //Displays Celsius (call convertFtoC(F) where celcuis conversion needed)

        F = 0;

        System.out.println("Fahrenheit\t Celsius"); 
        while (F <= 100)                    
        {
            // Display the F and C in increments of 10.
            System.out.println(F + "\t\t" + convertFtoC(F));
            // Increment for the next day.
            F++;
        }       
    }
}

我希望转换的循环以10为增量而不是1增加。

现在正在输出:

incorrect output

但我希望它是

  

0,10,20,30,40,50,60,70,80,90,100

5 个答案:

答案 0 :(得分:3)

如果你写的如下。

Property

此外,为什么你使用大写变量,按照惯例你应该用小写字母开始变量名,对象名用大写字母开头。

答案 1 :(得分:3)

现代惯用法专业方法

Q32835243.java

package com.stackoverflow;

import java.util.Scanner;

public class Q32835243
{
    private static double farhenheitToCelsius(final double fahrenheit) {return (fahrenheit - 32) * 5 / 9;}

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

        System.out.print("Enter a temperature in Fahrenheit: ");
        if (keyboard.hasNextDouble())
        {
            final double fahrenheit = keyboard.nextDouble();
            final double celsius = farhenheitToCelsius(fahrenheit);
            System.out.format("The temperature in Celsius is: %8.4f%n", celsius);
            System.out.format("Fahrenheit\t Celsius%n");

            for (int i=0; i < 100; i+=10)
            {
                System.out.format("%8.4f\t%8.4f%n", fahrenheit + i, farhenheitToCelsius(fahrenheit + i));
            }
        }
        else
        {
            System.err.format("%s is not a double!%nPlease enter a double value.", keyboard.next());
            System.exit(1);
        }
    }
}

Link to this solution as a fork of what you did.

我把这个工作代码放在ideone.com上,这样你就可以很容易地看到差异,以及如何使这个trival代码尽可能地证明。

在此解决方案中需要注意的事项:

  1. Always make as many things final as possible.它消除了两种最常见的程序错误类别NullPointerExceptionside effects

  2. 始终尽可能限制变量引用的范围和方法的可见性。您希望在使用变量时定义变量,并尽可能多地生成private

  3. 始终在您使用它们的上下文中命名变量,这样您就不需要发表评论来解释它们是什么。

  4. 当您偏离预期时,注释应仅在干净的代码中。你的所有评论都没用tautology,也违反了DRY原则。如果现在情况发生变化,您必须更新代码。更多要维护,更容易命名自我解释的事物。

  5. 短函数中使用单字母变量名称很好。在块fc的上下文中,如果它们是对象引用,则fahrenheitcelsius是可接受的名称。但是在家庭作业的情况下,明确总是更能准确地传达您的想法。

  6. 使用lowerCamelCaseUpperCamelCase时,请始终关注style guide。知道何时在正确的上下文中使用每个。

  7. 始终检查您的输入并处理无效数据。永远不要尝试修复它,如果错误停止程序,向用户解释他们出错的地方并结束程序。防御性节目很糟糕。

  8. 始终使用不同对象的功能。使用String.format()PrintStream.format()消除格式问题并使事情更易于维护。

  9. Learn to use the Scanner class correctly. .hasNextXxx()方法是有原因的,请使用它们! 扫描仪类有一个可怕的API,使用程序员比其他任何东西更令人沮丧。

答案 2 :(得分:1)

增强可读性

  1. 不要对变量使用大写标识符,因为它们适用于Java中的常量。
  2. 使用有意义的标识符名称。
  3. 以下是代码:

    import java.util.Scanner;
    
    public class Temperature
    {
    
        public static double convertFarenheitToCelsius(double farenheit)
        {
            return (farenheit-32)*5/9;
        }
    
        public static void main(String[] args)
        {
            double farenheit; //Stores Farenheit
            double celsius; //Stores Celsius
    
            Scanner keyboard = new Scanner(System.in);
    
            System.out.print("Enter a temperature in Fahrenheit: "); //Enter in Farenheit
            if (keyboard.hasNextDouble()){
                F = keyboard.nextDouble(); //Stores Farenheit
    
                System.out.println("The temperature in Celsius is: " + convertFarenheitToCelsius(farenheit)); //Displays Celsius (call convertFarenheitToCelsius(farenheit) where celcius conversion needed)
                farenheit = 0;
                System.out.println("Fahrenheit\t Celsius"); 
                while (farenheit <= 100){
                    System.out.println(farenheit + "\t\t" + convertFarenheitToCelsius(farenheit));
                    farenheit += 10;
                }   
            } else {
                System.err.format("%s is not a double!%nPlease enter a double value.", keyboard.next());
                System.exit(1);
            }   
        }
    }
    

答案 3 :(得分:0)

在循环中设置F+=10而不是F++

答案 4 :(得分:0)

我认为在你的情况下使用FOR是一个更好的选择。

public static void main(String[] args) {
    double fahrenheit = 50;
    double increment = 10;
    for(;fahrenheit <= 100; fahrenheit += increment){
        System.out.println(fahrenheit);
    }
}