Results 1 to 10 of 10
Thread: convertion to array
- 11-21-2009, 11:01 PM #1
Member
- Join Date
- Nov 2009
- Posts
- 8
- Rep Power
- 0
convertion to array
I have a program that i have to convert to using arrays instead of what i have to do the same thing and i'm not the strongest with array can any one help?
... i had hoped to just attach this but it is too big so unfortunutly i have to just post it
import java.io.*;
import java.util.*;
import java.text.*;
public class program7
{ public static void main (String [] args) throws Exception
{ double miles, amount = 0, total = 0;
int ctr = 0;
String line;
String filename = ("mg.dat");
Scanner infile = new Scanner(new FileReader(filename));
StringTokenizer st;
DecimalFormat fmt = new DecimalFormat ("0.00");
PrintWriter outfile = new PrintWriter("mg.out");
outfile.println("Output File");
header (outfile);
int n = infile.nextInt();
for ( int i = 1; i <= n; i++)
{ miles = infile.nextDouble();
if (miles > 0)
if (miles < 500)
amount = .15*miles;
else if (miles < 1000)
amount = 75.0 + .12*(miles - 500);
else if (miles < 1500)
amount = 135.0 + .10*(miles - 1000);
else if (miles < 2000)
amount = 185.0 + .08*(miles - 1500);
else if (miles < 3000)
amount = 225.0 + .06*(miles - 2000);
else amount = 285.0 + .05*(miles - 3000);
if(miles > 0)
outfile.println(leftpad1(miles,10) + " " + leftpad2(amount,15));
else outfile.println(leftpad1(miles,10) + " " + " *****");
if (miles > 0)
total += amount;
if (miles >= 0)
ctr++;} // end of for loop
summary (outfile, n, total, ctr);
outfile.println("total amount " + (fmt.format(total)));
outfile.close();}
//************************************************** *************
public static void header(PrintWriter outfile)
{outfile.println (" Report");
outfile.println(" miles amount");}
//************************************************** *************
public static void summary(PrintWriter outfile, int n, double total, int ctr)
{outfile.println(" The total amount of money received for all the miles run is " + total);
outfile.println(" The number of mileage values that were processed was " + n + ".");
outfile.println(" The number of mileage values that were greater than " + " or equal to zero was " + ctr + ".");
outfile.close();
}
//************************************************** *************
// Returns miles formatted to one decimal place and padded by spaces
// on the left so that the String returned has length width
public static String leftpad1 (double miles, int width)
{ String s; // String to be returned
int m; // length of s
DecimalFormat fmt = new DecimalFormat("0.0");
// convert miles to a String with one decimal place
s = fmt.format(miles);
// determine the length of s
m = s.length();
// pad s by spaces on the left so that the resulting length of s is width
for (int i = 0; i < width - m; i++)
s = " " + s; // one space between the " "
return s;
}
//************************************************** *****************
// Returns amount formatted to one decimal place and padded by spaces
// on the left so that the String returned has length width
public static String leftpad2 (double amount, int width)
{ String s; // String to be returned
int m; // length of s
DecimalFormat fmt = new DecimalFormat("0.00");
// convert amount to a String with one decimal place
s = fmt.format(amount);
// determine the length of s
m = s.length();
// pad s by spaces on the left so that the resulting length of s is width
for (int i = 0; i < width - m; i++)
s = " " + s; // one space between the " "
return s;
}
}
-
Your code is very hard to read. Please edit your post and add code tags. To see how to do this, look at my signature immediately below and click on the link. Again, you don't need to repost the code, just edit the post already present.
Much luck!
edit: also, what exactly are you having trouble with? Just posting a program without a very specific question is frowned upon here. You'll likely get a better answer if you can tell us exactly what the trouble is. Posting your best attempt at a solution using arrays will help with this.
- 11-21-2009, 11:30 PM #3
Senior Member
- Join Date
- Sep 2009
- Location
- Sweden/Borås
- Posts
- 107
- Rep Power
- 0
Ocean - Hope you dont mind that i moved your code. Makes it little easer to read
I have a program that i have to convert to using arrays instead of what i have to do the same thing and i'm not the strongest with array can any one help?
... i had hoped to just attach this but it is too big so unfortunutly i have to just post it
Java Code:import java.io.*; import java.util.*; import java.text.*; public class program7 { public static void main (String [] args) throws Exception { double miles, amount = 0, total = 0; int ctr = 0; String line; String filename = ("mg.dat"); Scanner infile = new Scanner(new FileReader(filename)); StringTokenizer st; DecimalFormat fmt = new DecimalFormat ("0.00"); PrintWriter outfile = new PrintWriter("mg.out"); outfile.println("Output File"); header (outfile); int n = infile.nextInt(); for ( int i = 1; i <= n; i++) { miles = infile.nextDouble(); if (miles > 0) if (miles < 500) amount = .15*miles; else if (miles < 1000) amount = 75.0 + .12*(miles - 500); else if (miles < 1500) amount = 135.0 + .10*(miles - 1000); else if (miles < 2000) amount = 185.0 + .08*(miles - 1500); else if (miles < 3000) amount = 225.0 + .06*(miles - 2000); else amount = 285.0 + .05*(miles - 3000); if(miles > 0) outfile.println(leftpad1(miles,10) + " " + leftpad2(amount,15)); else outfile.println(leftpad1(miles,10) + " " + " *****"); if (miles > 0) total += amount; if (miles >= 0) ctr++;} // end of for loop summary (outfile, n, total, ctr); outfile.println("total amount " + (fmt.format(total))); outfile.close();} //************************************************** ************* public static void header(PrintWriter outfile) {outfile.println (" Report"); outfile.println(" miles amount");} //************************************************** ************* public static void summary(PrintWriter outfile, int n, double total, int ctr) {outfile.println(" The total amount of money received for all the miles run is " + total); outfile.println(" The number of mileage values that were processed was " + n + "."); outfile.println(" The number of mileage values that were greater than " + " or equal to zero was " + ctr + "."); outfile.close(); } //************************************************** ************* // Returns miles formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad1 (double miles, int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.0"); // convert miles to a String with one decimal place s = fmt.format(miles); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } //************************************************** ***************** // Returns amount formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad2 (double amount, int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.00"); // convert amount to a String with one decimal place s = fmt.format(amount); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } }
- 11-23-2009, 08:46 AM #4
Member
- Join Date
- Nov 2009
- Posts
- 22
- Rep Power
- 0
i code very much. how I don't know
:D I'm from vietnam - I hope you help me :D
- 11-23-2009, 06:42 PM #5
Member
- Join Date
- Nov 2009
- Posts
- 8
- Rep Power
- 0
I'm sorry for not being specific with my question but i figured it would be good to mention that it has to be two parallel one dimensional arrays....I understand that i need to separate the amount and miles variables. my issue is that I don't know where to start. which is why i have no approximate guess as to how i should write this program.
edit-- this was as far as I have gotten but I'm pretty sure I'm way off from what it should look like
Java Code:import java.io.*; import java.util.*; import java.text.*; public class program9 { public static void main (String [] args) throws Exception { double totalmiles, totalamount = 0, total = 0; int[]amount = new int [12]; int[]miles = new int [12]; int ctr = 0; int ctrR = 0; String filename = ("mg.dat"); Scanner infile = new Scanner(new FileReader(filename)); PrintWriter outfile = new PrintWriter("mg.out"); header (outfile); int n = infile.nextInt(); for ( int i = 1; i <= n; i++) { miles[i] = infile.nextDouble(); if (miles > 0) ctrR++; if (miles[i] < 500) amount[i] = .15*miles; else if (miles[i] < 1000) amount[i] = 75.0 + .12*(miles - 500); else if (j < 1500) amount[i]i = 135.0 + .10*(miles - 1000); else if (miles[i] < 2000) amount[i] = 185.0 + .08*(miles - 1500); else if (miles[i] < 3000) amount[i] = 225.0 + .06*(miles - 2000); else amount[i] = 285.0 + .05*(miles - 3000); if(miles[i] > 0) outfile.println(leftpad1(miles[i],10) + " " + leftpad2(amount[i],15)); else outfile.println(leftpad1(miles[i],10) + " " + " *****"); if (miles[i] > 0) total += amount[i]; if (miles[i] >= 0) ctr++;} // end of for loop summary (outfile, n, total, ctr);} //*************************************************************** public static void header(PrintWriter outfile) {outfile.println (" Report"); outfile.println(" miles amount");} //*************************************************************** public static void summary(PrintWriter outfile, int n, double total, int ctr) {outfile.println("total amount " + (fmt.format(total))); outfile.println(" The total amount of money received for all the miles run is " + total); outfile.println(" The number of mileage values that were processed was " + n + "."); outfile.println(" The number of mileage values that were greater than " + " or equal to zero was " + ctr + "."); outfile.close(); } //*************************************************************** // Returns miles formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad1 (double miles[i], int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.0"); // convert miles to a String with one decimal place s = fmt.format(miles[i]); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } //******************************************************************* // Returns amount formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad2 (double amount[i], int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.00"); // convert amount to a String with one decimal place s = fmt.format(amount[i]); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } }Last edited by bobbychiken; 11-25-2009 at 08:04 PM.
- 11-25-2009, 08:07 PM #6
Member
- Join Date
- Nov 2009
- Posts
- 8
- Rep Power
- 0
iv been editing the code above to see if that helps anyone here but as previously stated i have no idea what im doing and im probably far off
- 11-25-2009, 08:50 PM #7
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,421
- Blog Entries
- 7
- Rep Power
- 17
When people use parallel arrays they are normally on the wrong track. Those arrays were used in Fortran code because Fortran didn't offer anything better; Java does:
This little class encapsulates a miles/amount pair (whatever that is). You only need one array of MilesThings or a List<MilesThing>.Java Code:public class MilesThing { private int amount; private int miles; public MilesThing(int amount, int miles) { this.amount= amount; this.miles= miles; } public int getAmount() { return amount; } public int getMiles() { return miles; } }
kind regards,
Jos
- 11-29-2009, 04:04 AM #8
Member
- Join Date
- Nov 2009
- Posts
- 8
- Rep Power
- 0
your input helped JosAH
and i also found some more input from another and maybe this code will be a bit closer to what it should look like ...I'm close to the final I'm more sure but I'm still missing a few things and if anyone could help me fill that in it would be most appreciated
Java Code:import java.io.*; import java.util.*; import java.text.*; public class program 9 { public static void main (String [] args) throws Exception { double totalMiles, totalAmount , totalmilesgt0, avgRe=0, avgMiles=0; double[]amounts = new double [15]; double[]miles = new double [15]; int ctrMiles = 0; int ctrMilesgt0 = 0; String filename = ("mg.dat"); Scanner infile = new Scanner(new FileReader(filename)); ctrMiles = getMiles(infile, miles); calcAmounts(miles, amounts, ctrmiles); totalMiles = calctotal(miles, ctrmiles); totalamount = calctotal(amounts, ctrmiles); totalmilesgt0 = calctotalgt0(miles, ctrmiles); totalamountgt0 = calctotalgt0(amounts, ctrmiles); ctrmilesgt0 = countValuesgt0(miles, ctrmiles); avgRe = totalamountgt0/b; avgMiles = totalmilesgt0/b; PrintWriter outfile = new PrintWriter("mg.out"); header (outfile); details (printWriter outfile,miles,amounts, ctrmiles); summary (outfile, n, total, ctr); }// end of body //************************************************************** public static double calctotal(double number[],int ctrmiles) { temp = 0; for (int i = 0; i < ctrmiles; i++) temp += number[i]; return temp; } //**************************************************************** public static double calctotalgt0(double number[],int ctrmilesgt0) { temp2 = 0; for (int i = 0; i < ctrmilesgt0; i++) { if(i > 0) temp2 += number[i]; } return temp2; } //**************************************************************** public static double countValues(double number[],int ctrmiles) { j = 0; for (int i = 0; i < ctrmiles; i++) { if ( i > 0) j++;} return j; } //**************************************************************** public static int getMiles(ctrMiles, double miles[]) { int n = infile.nextInt(); for ( int i = 0; i < n; i++) miles[i] = infile.nextDouble(); return n; } //*************************************************************** public static void details(PrintWriter outfile, double miles[], double amounts[],int numValues) { for(int i = 0;i < numValues;i++) { if(miles[i] > 0) outfile.println(leftpad1(miles[i],10) + " " + leftpad2(amount[i],15)); else outfile.println(leftpad1(miles[i],10) + " " + " *****"); } } //*************************************************************** public static double calcMiles(double mileage) { { if (mileage < 500) return .15*mileage; else if (mileage < 1000) return 75.0 + .12*(mileage - 500); else if (mileage < 1500) return 135.0 + .10*(mileage - 1000); else if (mileage < 2000) return 185.0 + .08*(mileage - 1500); else if (mileage < 3000) return 225.0 + .06*(mileage - 2000); else return 285.0 + .05*(mileage - 3000); } } //*************************************************************** public static void calcAmounts(double miles[], double amounts[], int numValues) { for(int i = 0;i < numValues;i++) amounts[i] = calcMiles(miles[i]); } //*************************************************************** public static void header(PrintWriter outfile) { outfile.println (" Report"); outfile.println(" miles amount"); } //*************************************************************** public static void summary(PrintWriter outfile, int ctrmilesgt0, double totalamount, int ctrmiles) { outfile.println("total amount " + (fmt.format(total))); outfile.println(" The total amount of money received for all the miles run is " + totalamount); outfile.println(" The number of mileage values that were processed was " + ctrmilesgt0 + "."); outfile.println(" The number of mileage values that were greater than " + " or equal to zero was " + ctrmiles + "."); outfile.close(); } //*************************************************************** // Returns miles formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad1 (double miles[i], int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.0"); // convert miles to a String with one decimal place s = fmt.format(miles[i]); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } //******************************************************************* // Returns amount formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad2 (double amount[i], int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.00"); // convert amount to a String with one decimal place s = fmt.format(amount[i]); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } }
- 12-01-2009, 08:10 PM #9
Member
- Join Date
- Nov 2009
- Posts
- 8
- Rep Power
- 0
I'm having trouble with a last few compile errors that i didn't think would be too hard but I'm just not seeing where to fix it. and I've tried fiddling with double and int where it relates but I'm not getting anywhere.
these are the errors and the code is below
program9.java:21: possible loss of precision
found : double
required: int
avgRe = (totalAmountgt0/ctrMiles);
^
program9.java:22: possible loss of precision
found : double
required: int
avgMiles = (totalMilesgt0/ctrMiles);
^
2 errors
Java Code:import java.io.*; import java.util.*; import java.text.*; public class program9 { public static void main (String [] args) throws Exception { double totalMiles, totalAmount , totalMilesgt0, totalAmountgt0 = 0; int avgRe, avgMiles =0; double[]amounts = new double [10]; double[]miles = new double [10]; int ctrMiles = 0; int ctrMilesgt0 = 0; String filename = ("mg.dat"); Scanner inFile = new Scanner(new FileReader(filename)); ctrMiles = getMiles(inFile, ctrMiles, miles); calcAmounts(miles, amounts, ctrMiles); totalMiles = calcTotal(miles, ctrMiles); totalAmount = calcTotal(amounts, ctrMiles); totalMilesgt0 = calcTotalgt0(miles, ctrMiles); totalAmountgt0 = calcTotalgt0(amounts, ctrMiles); avgRe = (totalAmountgt0/ctrMiles); avgMiles = (totalMilesgt0/ctrMiles); PrintWriter outFile = new PrintWriter("mg.out"); header (outFile); details (outFile, miles, amounts, ctrMiles); summary (outFile, totalAmount, ctrMiles, ctrMilesgt0, avgRe, avgMiles); }// end of body //************************************************************** public static double calcTotal(double []number,int ctrMiles) { double temp = 0; for (int i = 0; i < ctrMiles; i++) temp += number[i]; return temp; } //**************************************************************** public static double calcTotalgt0(double []number,int ctrMiles) { int b = 0; for (int i = 0; i < ctrMiles; i++) { if(number[i] > 0) b += number[i]; } return b; } //**************************************************************** public static int getMiles(Scanner inFile , int ctrMiles, double []miles) { int n = inFile.nextInt(); for ( int i = 0; i < n; i++) miles[i] = inFile.nextDouble(); return n; } //*************************************************************** public static void details(PrintWriter outFile, double []miles, double []amounts,int numValues) { for(int i = 0;i < numValues;i++) { if(miles[i] > 0) outFile.println(leftpad1(miles[i],10) + " " + leftpad2(amounts[i],15)); else outFile.println(leftpad1(miles[i],10) + " " + " *****"); } } //*************************************************************** public static double calcMiles(double mileage) { { if (mileage < 500) return .15*mileage; else if (mileage < 1000) return 75.0 + .12*(mileage - 500); else if (mileage < 1500) return 135.0 + .10*(mileage - 1000); else if (mileage < 2000) return 185.0 + .08*(mileage - 1500); else if (mileage < 3000) return 225.0 + .06*(mileage - 2000); else return 285.0 + .05*(mileage - 3000); } } //*************************************************************** public static void calcAmounts(double []miles, double []amounts, int numValues) { for(int i = 0;i < numValues;i++) amounts[i] = calcMiles(miles[i]); } //*************************************************************** public static void header(PrintWriter outFile) { outFile.println (" Report"); outFile.println(" miles amount"); } //*************************************************************** public static void summary(PrintWriter outFile, double totalAmount, int ctrMiles, int ctrMilesgt0, int avgRe, int avgMiles) { outFile.println(" The total amount of money received for all the miles run is " + totalAmount + "."); outFile.println(" The number of mileage values that were processed was " + ctrMiles + "."); outFile.println(" The number of mileage values that were greater than zero are " + ctrMilesgt0 + "."); outFile.println(" The averge reimbursement is " + avgRe + "."); outFile.println(" The average miles ran are " + avgMiles + "."); outFile.close(); } //*************************************************************** // Returns miles formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad1 (double miles, int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.0"); // convert miles to a String with one decimal place s = fmt.format(miles); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } //******************************************************************* // Returns amount formatted to one decimal place and padded by spaces // on the left so that the String returned has length width public static String leftpad2 (double amount, int width) { String s; // String to be returned int m; // length of s DecimalFormat fmt = new DecimalFormat("0.00"); // convert amount to a String with one decimal place s = fmt.format(amount); // determine the length of s m = s.length(); // pad s by spaces on the left so that the resulting length of s is width for (int i = 0; i < width - m; i++) s = " " + s; // one space between the " " return s; } }
- 12-01-2009, 08:24 PM #10
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,421
- Blog Entries
- 7
- Rep Power
- 17
Read the error message: if you do a division a/b where both a and (or) b are of type double, the quotient will be of type double. If you want to assign that result to something of type int you'll lose some of the precision. That is what the compiler is trying to tell you.
You either have to explicitly cast the result of the divisoin to type int to keep the compiler happy or you have to assign the result to something that also has type double (which also keeps the compiler happy).
kind regards,
Jos
Similar Threads
-
Program(convertion)
By ayangupta in forum Threads and SynchronizationReplies: 4Last Post: 03-08-2009, 12:48 PM -
String/sentence to unicode convertion
By sandeepvreddy in forum New To JavaReplies: 5Last Post: 11-20-2008, 03:33 PM -
stiring to unicode convertion
By sandeepvreddy in forum New To JavaReplies: 2Last Post: 09-20-2008, 05:08 PM -
Problem with Image Convertion
By aptivo in forum Java 2DReplies: 0Last Post: 06-09-2008, 11:15 PM -
Date convertion in java
By Preethi in forum New To JavaReplies: 25Last Post: 05-16-2008, 05:11 PM


LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks