这是我现在的代码: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增加。
现在正在输出:
但我希望它是
0,10,20,30,40,50,60,70,80,90,100
答案 0 :(得分:3)
如果你写的如下。
Property
此外,为什么你使用大写变量,按照惯例你应该用小写字母开始变量名,对象名用大写字母开头。
答案 1 :(得分:3)
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);
}
}
}
我把这个工作代码放在ideone.com上,这样你就可以很容易地看到差异,以及如何使这个trival代码尽可能地证明。
Always make as many things final
as possible.它消除了两种最常见的程序错误类别NullPointerException
和side effects。
始终尽可能限制变量引用的范围和方法的可见性。您希望在使用变量时定义变量,并尽可能多地生成private
。
始终在您使用它们的上下文中命名变量,这样您就不需要发表评论来解释它们是什么。
当您偏离预期时,注释应仅在干净的代码中。你的所有评论都没用tautology,也违反了DRY原则。如果现在情况发生变化,您必须更新代码和。更多要维护,更容易命名自我解释的事物。
在短函数中使用单字母变量名称很好。在块f
和c
的上下文中,如果它们是对象引用,则fahrenheit
和celsius
是可接受的名称。但是在家庭作业的情况下,明确总是更能准确地传达您的想法。
使用lowerCamelCase
和UpperCamelCase
时,请始终关注style guide。知道何时在正确的上下文中使用每个。
始终检查您的输入并处理无效数据。永远不要尝试修复它,如果错误停止程序,向用户解释他们出错的地方并结束程序。防御性节目很糟糕。
始终使用不同对象的功能。使用String.format()
和PrintStream.format()
消除格式问题并使事情更易于维护。
Learn to use the Scanner
class correctly. .hasNextXxx()
方法是有原因的,请使用它们!
扫描仪类有一个可怕的API
,使用程序员比其他任何东西更令人沮丧。
答案 2 :(得分:1)
增强可读性:
以下是代码:
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);
}
}