[英]Printing out arrays after changing their value
我正在尝试将阵列温度转换为摄氏度,但它们始终输出为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
}
您只打印变量摄氏度 。 但是您真正需要打印的是相关的温度值。 因此创建一个数组并在计算时将温度值放入并打印它们。只需创建一个数组即可。
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++;
}
for( index = 0; index < temperature.length;)
{
celsius= (temperature[index]-32)*5/9;
index++;
}
您只存储一个值并将其打印出来,由于循环遍历每个值,它将是数组中的最后一个值,但是下一个值会覆盖最后一个值。 您应该转换每个值,并将每个值存储到一个数组中。
您可以将摄氏度变成与温度大小相同的数组,以保存每个转换后的值。
您有一个结果数组来存储转换后的值。
这是您的代码段的修改后的版本:
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++;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.