繁体   English   中英

更改值后打印出数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM