我想在Java中做一個for回圈,將華氏度轉換為攝氏度,從30開始到100,然后
。下面是我的想法:
public static void farenheitToCelcius() {
double farenheit = 0;
for(double i = 30; i < 100; i = 10) {
double celcius = ((farenheit - 32) *5) / 9。
System.out.println(celcius)。
}
我一直得到-17.777列印7次。如果能得到一些幫助,我將非常感激。
uj5u.com熱心網友回復:
在法氏轉換為攝氏時,你使用了法氏變數(在0時保持不變)而不是i。
這將是一個正確的實作(假設轉換方程是正確的):
這將是一個正確的實作。
public static void farenheitToCelcius(){
//double farenheit = 0;.
for(double i = 30; i < 100; i = 10){
double celcius = ((i - 32) *5) / 9。
System.out.println(celcius)。
}
如果你想包括10,確保條件是i <= 100,并使i成為int以防止四舍五入的錯誤。
uj5u.com熱心網友回復:
你沒有分配增量值,它總是使用double farenheit = 0,因此回圈不斷輸出17,77,因為它收到0作為它的引數
public static void farenheitToCelcius(){
double farenheit = 0;
for(double i = 30; i < 100; i = 10){
farenheit = i; //需要在這里設定數值,否則它總是在計算0。
double celcius = (farenheit - 32) * 5/9。
System.out.println(celcius)。
}
uj5u.com熱心網友回復:
另外兩個答案是好的,但可以使用改進的命名和格式。
注意到我們是如何通過在每個數字上附加d來制作double字樣的。
并且注意到我們是如何采納上面的評論的建議,使用一個描述性的名稱(fahrenheit),而不僅僅是i。這使得我們的代碼更加自我檔案化。在這種情況下,使用i既是非描述性的,也是誤導性的,因為這里的型別不是一個整數。
public class Converters
{
public static double fahrenheitToCelsius ( final double fahrenheit )
{
double celsius = ( fahrenheit -) 32d ) * ( 5d / 9d ) 。
return 攝氏度。
}
而且,我們的回圈通過一些華氏值。
double start = 30d, end = 100d;
for ( double fahrenheit = start ; fahrenheit <= end ; fahrenheit = 10 )
{
double celsius = Converters.fahrenheitToCelsius( fahrenheit ) 。
System.out.println( "fahrenheit" fahrenheit " ? celsius" celsius ) 。
}
當運行時。
fahrenheit 30.0 ? celsius -1.1111111111111112
華氏40.0 ? 攝氏4.444444445
華氏50.0 ? 攝氏10.0
華氏60.0 ? 攝氏15.5555555555557
華氏70.0 ? 攝氏21.111111111111
華氏80.0 ? 攝氏26.6666666666668
華氏90.0 ? 攝氏32.222222222222
華氏100.0 ? 攝氏37.777777777778
獎勵:你可以用流來寫一個單行本。不是說在這種情況下這是一種改進,但僅供參考。
我們使用IntStream來生成一串整數,同時以十為單位遞增,將這些數字轉換為double值,并轉換為攝氏度,同時將每個結果發送到控制臺。
IntStream.iterate( 30 , fahrenheit -> fahrenheit 10 ) 。 limit( ( ( 100 - 30 ) / 10 ) 1 ).asDoubleStream().map( Converters :: fahrenheitToCelsius ).forEach( System.out :: println ) 。
或者,重新格式化:
IntStream
.iterate( 30 , fahrenheit -> fahrenheit 10 )
.limit( ( ( 100 - 30 ) / 10 ) 1 )
.asDoubleStream()
.map( Converters :: fahrenheitToCelsius )
.forEach( System.out :: println )。
或者將轉換寫入該單行代碼,而不是呼叫另一個方法。
IntStream
.iterate( 30 , fahrenheit -> fahrenheit 10 )
.limit( ( ( 100 - 30 ) / 10 ) 1 )
.asDoubleStream()
.map( fahrenheit -> ( fahrenheit - 32d ) * ( 5d / 9d )
.forEach( System.out :: println )。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/312356.html
標籤:
