Java-Read pairs of large numbers from file and represent them with linked list, get the sum and product of each pair -
data file looks below
12,234,123 123,452,622 (here empty line) 1,000,010 20,000
result supposes looks below
12234123 123452622 sum: 125686745 product:1510334562... 1000010 20000 sum: 1020010 product: 20000200000
can not use utility library such java.math.bigdecimal javautil.linkedlist etc.
- i dont know how display each number on 1 row
my result like
12 234 123
but need display on 1 row as
12234123
- the problem of space, there empty line between each pair of numbers can first pair of numbers since while statement works when line not null.
shown on below:
while((line = file.readline())!= null)
i dont know how modify it.
for method of sum , method of product. hope can give me clues.
here code. (blank line problem solved)
public static void main (string[] args){ if (args.length == 0) system.out.println("no file specified."); else{ filereader thefile; bufferedreader infile; string num1,num2; try{ thefile = new filereader(args[0]); infile = new bufferedreader(thefile); while((num1 = infile.readline())!= null){ if(num1.length()==0){ } else{ num2 = infile.readline(); num1.replace(",", ""); num2.replace(",", ""); system.out.println(num1); system.out.println(num2); } } } catch (exception e) { system.out.println(e); } } }
well, i'll address 2 points, should read on i/o here.
1) don't know how display each number on 1 row.
while ((line = file.readline()) != null)
since you're consuming input line line, you'll read whole number in already. string.replace(",", "")
method take care of commas. sum , product, think adder, using string
representations addition , multiplication same way hand.
2) there empty line between each pair of numbers. can first pair of numbers since while statement works when line not null.
the null
check eof
, or end of file. according javadocs bufferedreader, blank line equivalent "" + "\n"
, you'll read blank line. check if line.equals("")
, nothing.
edit: addressing updated post
- you need avoid resource leaks , create file pass filereader. take @ appropriate constructors.
- i've refactored deal fact have multiple test cases
- you shouldn't split on comma delimiter, because want single line of output, correct?
- finally, logic, research on bignums, how biginteger implemented, , try create own simple implementations.
here's fixes i/o implemented. should read more on topic, free focus on bignum algorithms, suspect point of exercise.
private static string add(string num1, string num2) { // implement } private static string multiply(string num1, string num2) { // implement } try ( bufferedreader reader = new bufferedreader(new filereader(new file(args[0]))); ) { string num1, num2; while ((num1 = reader.readline()) != null) { num2 = reader.readline(); // assumes input formatted correctly num1.replaceall(",", ""); // "delete" commas num2.replaceall(",", ""); system.out.printf("%s\n", num1); system.out.printf("%s\n", num2); system.out.printf("sum: %s\n", add(num1, num2)); system.out.printf("product: %s\n", multiply(num1, num2)); reader.readline(); // consume blank line } } catch (ioexception e) { system.err.println(e.getmessage()); // error output }
Comments
Post a Comment