Go Back   CodingForums.com > :: Server side development > Java and JSP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 12-06-2012, 04:21 PM   PM User | #1
kron1cd
New to the CF scene

 
Join Date: Dec 2012
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
kron1cd is an unknown quantity at this point
Stuck on this code...

Hello I am still very new to java and I've been looking over this code for quite some time. There are two hurdles I am trying to get by with which the later one actually just started happening recently... I am trying to post the largest and smallest index number from the last two methods. The second thing that is happening is that now my code just hangs after I input the rainfall numbers.... any help would be greatly appreciated!!

import java.util.Scanner;
import java.text.DecimalFormat;

public class Rainfall
{
public static void main(String[] args)
{
final int MONTHS = 12;
double[] rain = new double[MONTHS];
initRain(rain);
double total = totalRain(rain);
double average = averageRain(rain, total);
double most = mostRain(rain);
double least = leastRain(rain);
DecimalFormat digit = new DecimalFormat("#.0");
System.out.println("The total rainfall of the year is " + digit.format(total));
System.out.println("The average rainfall of the year is " + digit.format(average));
System.out.println("The month with the highest amount of rain is " + most);
System.out.println("The month with the lowest amount of rain is " + least);
}
public static void initRain(double[] array)
{
Scanner keyboard = new Scanner(System.in);
for (int x = 0; x < array.length; x++)
{
System.out.print("Enter Rainfall for month " + (x + 1) + ": ");
array[x] = keyboard.nextDouble();
}
}
public static double totalRain(double[] array)
{
double total = 0;
for (int x = 0; x < 12; x++)
total += array[x];
return total;
}
public static double averageRain(double[] array, double total)
{
return total / array.length;
}
public static double mostRain(double[] array)
{;
double maximum = array[1];
int value = 0;
for (int i=0; i < 12; i = i++)
{
if (array[i] >= maximum)
maximum = array[i];
value = i;
}
return value;
}
public static double leastRain(double[] array)
{
double minimum = array[0];
int value;
for (int i=0; i < 12; i++)
{
if (array[i] <= minimum)
minimum = array[i];
value = i;
}
return value;
}
}
kron1cd is offline   Reply With Quote
Old 12-06-2012, 05:46 PM   PM User | #2
Fou-Lu
God Emperor


 
Fou-Lu's Avatar
 
Join Date: Sep 2002
Location: Saskatoon, Saskatchewan
Posts: 15,635
Thanks: 4
Thanked 2,448 Times in 2,417 Posts
Fou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to all
You don't need to put that much work into the least and most methods. Instead, sort the arrays and pull from the first and last:
PHP Code:
    public static double mostRain(double[] array)
    {
        
double[] copy = array.clone();
        
Arrays.sort(copy);
        return 
copy[copy.length 1];
    }
    
    public static 
double leastRain(double[] array)
    {
        
double[] copy = array.clone();
        
Arrays.sort(copy);
        return 
copy[0];
    } 
To get the month index for the most and least would be similar to what you have, but you don't take the values of.
PHP Code:
    public static int mostRainMonth(double[] array)
    {
        
int iMonth 0;
        for (
int i 1< array.length; ++i)
        {
            if (array[
i] > array[iMonth])
            {
                
iMonth i;
            }
        }
        return 
iMonth;
    }

    public static 
int leastRainMonth(double[] array)
    {
        
int iMonth 0;
        for (
int i 1< array.length; ++i)
        {
            if (array[
i] < array[iMonth])
            {
                
iMonth i;
            }
        }

        return 
iMonth;
    } 
Conflicting months where two match cannot be reported this way.

The hang is an infinite loop here: for (int i=0; i < 12; i = i++). Remove the assignment (or just use what I posted since I don't use a loop in that counter).

I'd give the averageRain an overload as well:
PHP Code:
    public static double averageRain(double[] array)
    {
        return 
averageRain(array, totalRain(array));
    } 

Also, in the future please choose a better topic title to describe the problem, and use [php][/php] or [code][/code] tags around code to preserve the formatting.
Fou-Lu is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:24 AM.


Advertisement
Log in to turn off these ads.