我正在尝试将数组温度转换为摄氏温度,但它们仍然输出为16.0,我怎样才能转换所有数组值并单独打印?根据月份,它们都按顺序排列,需要转换数组值,然后根据月份打印。
以下是我的代码:
import java.util.Scanner;
class AnnualClimate
{
public static void main( String[] args )
{
// Declare and intialize variables - programmer to provide initial values
Scanner in = new Scanner( System.in );
String city = "Daytona Beach";
String state = "Florida";
int o = 0;
double celsius = 0;
int index = 0;
String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
double temperature[] = { 58.4, 60.0, 64.7, 68.9, 74.8, 79.7, 81.7, 81.5, 79.9, 74.0, 67.0, 60.8 };
double precipitation[] = { 3.1, 2.7, 3.8, 2.5, 3.3, 5.7, 5.2, 6.1, 6.6, 4.5, 3.0, 2.7 };
String tempLabel = "F"; // initialize to F
String precipLabel = "inch"; // initialize to inch
// INPUT - ask user for temp and preciptation scale choice
System.out.print( "Choose the temperature scale (F = Fahrenheit, C = Celsius): " );
String tempChoice = in.next();
System.out.print( "Choose the precipitation scale (i = inches, c = centimeteres): " );
String precipChoice = in.next();
// PROCESSING - convert from F to C and in to cm based on user's choices
// remember 5/9 = 0, 5.0/9 = .5555
if ( tempChoice.equalsIgnoreCase( "C" ) )
{
tempLabel = "(C)";
for ( index = 0; index < temperature.length; )
{
celsius = ( temperature[ index ] - 32 ) * 5 / 9;
index++;
}
}
// Convert in values to cm; replace the current values in precipitation
if ( precipChoice.equalsIgnoreCase( "c" ) )
{
precipLabel = "(cm)";
for ( int i = 0; i < precipitation.length; i++ )
{
double centimeters = precipitation[ i ] * 2.54;
}
}
// OUTPUT - print table using printf to format and align data
System.out.println();
System.out.println( "Climate Data" );
System.out.println( "Location: " + city + ", " + state );
System.out.printf( "%5s %18s %s %18s %s", "Month", "Temperature", tempLabel, "Precipitation", precipLabel );
System.out.printf( "%n" );
System.out.printf( "***************************************************" );
while ( o < month.length )
{
if ( tempChoice.equalsIgnoreCase( "C" ) )
{
System.out.printf( "%n" );
System.out.printf( month[ o ] );
System.out.printf( "%20.2f", celsius );
System.out.printf( "%25.2f%n", precipitation[ o ] );
o++;
}
}
System.out.println();
System.out.printf( "***************************************************" );
System.out.println();
}// end main
}
答案 0 :(得分:2)
您只打印变量摄氏。但你真正需要打印的是相关的温度值。因此,创建一个数组并在计算时输出温度值并打印它们。只需创建一个数组。
Double[] celsius_temp=new Double[temperature.length];
` 并在计算时存储值
if(tempChoice.equalsIgnoreCase("C"))
{
tempLabel="(C)";
for( index = 0; index < temperature.length;)
{
celsius= (temperature[index]-32)*5/9;
celsius_temp[index]=celsius;
index++;
}
}
并打印表格
System.out.println();
System.out.println("Climate Data");
System.out.println("Location: " + city +", " + state);
System.out.printf("%5s %18s %s %18s %s","Month","Temperature",tempLabel,"Precipitation",precipLabel);
System.out.printf("%n");
System.out.printf("***************************************************");
while ( o< month.length)
{
if(tempChoice.equalsIgnoreCase("C"))
{
System.out.printf("%n");
System.out.printf(month[o]);
System.out.printf("%20.2f", celsius_temp[o]);
System.out.printf("%25.2f%n", precipitation[o]);
o++;
}
答案 1 :(得分:1)
for( index = 0; index < temperature.length;)
{
celsius= (temperature[index]-32)*5/9;
index++;
}
您只存储一个值并将其打印出来,它将是数组中的最后一个值,因为循环遍历每个值,但下一个值将覆盖最后一个值。您应该转换每个值并将每个值存储到一个数组中。
您可以将摄氏温度调整为与温度大小相同的数组,以保存每个转换后的值。
答案 2 :(得分:0)
您有一个结果数组来存储转换后的值。
以下是您的代码段的修改版本:
double[] celsius = new double[ temperature.length ]; // added!!!
if ( tempChoice.equalsIgnoreCase( "C" ) )
{
tempLabel = "(C)";
for ( index = 0; index < temperature.length; )
{
celsius[ index ] = ( temperature[ index ] - 32 ) * 5 / 9; // modified!!!
index++;
}
}
// Convert in values to cm; replace the current values in precipitation
double[] centimeters = new double[ precipitation.length ]; // added!!!
if ( precipChoice.equalsIgnoreCase( "c" ) )
{
precipLabel = "(cm)";
for ( int i = 0; i < precipitation.length; i++ )
{
centimeters[ i ] = precipitation[ i ] * 2.54; // modified!!!
}
}
修改输出代码段:
while ( o < month.length )
{
if( tempChoice.equalsIgnoreCase("C") )
{
System.out.printf("%n");
System.out.printf(month[o]);
System.out.printf("%20.2f", celsius[ o ] ); // modified
System.out.printf("%25.2f%n", precipitation[ o ]); // modified
o++;
}
}