简体   繁体   English

更改值后打印出数组

[英]Printing out arrays after changing their value

I'm trying to convert the array temperature into celsius but they keep outputting as 16.0, how can I able to convert all of the array values and print them separately? 我正在尝试将阵列温度转换为摄氏度,但它们始终输出为16.0,我如何能够转换所有阵列值并分别打印呢? They are all in order according to the month, the array values need to be converted and then printed according to the month. 它们都是按照月份顺序排列的,需要先转换数组值,然后再根据月份进行打印。

The following is my code: 以下是我的代码:

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
}

you are printing only the variable celsius . 您只打印变量摄氏度 But what you really need to print is relevant temprature value. 但是您真正需要打印的是相关的温度值。 So create an array and put the temprature values when they are calculating and print them.Just create an Array. 因此创建一个数组并在计算时将温度值放入并打印它们。只需创建一个数组即可。

 Double[] celsius_temp=new Double[temperature.length];

` And store values when calculating `并在计算时存储值

if(tempChoice.equalsIgnoreCase("C"))
    {
        tempLabel="(C)";


        for( index = 0; index < temperature.length;)
        {
           celsius= (temperature[index]-32)*5/9;

           celsius_temp[index]=celsius;
           index++;

        }

    }

and print the table 并打印表格

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++;

            }

You're only storing one value and printing it out, it'll be the last value in the array because of the loop going through each one, but the next value overwrites the last. 您只存储一个值并将其打印出来,由于循环遍历每个值,它将是数组中的最后一个值,但是下一个值会覆盖最后一个值。 You should be converting each value and storing each of them into an array. 您应该转换每个值,并将每个值存储到一个数组中。

You can make celsius into an array of same size as temperature to hold each converted value. 您可以将摄氏度变成与温度大小相同的数组,以保存每个转换后的值。

You have a result array to store the converted value. 您有一个结果数组来存储转换后的值。

Here is modified version of your code segment: 这是您的代码段的修改后的版本:

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!!!
    }
}

And modify the output code segment: 并修改输出代码段:

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