The function of  class Adler32 is to hold value variable , so when this code 
process:
while ((c = in.read()) != -1)
          out.write(c);
in main method, when in.read() execute ,it's also execute update() method from 
object checksum than will turn to update value variable.
same with out.write() process, it will execute update() method from another 
object checksum than will turn to update value variable.

please attention that object checksum is implemented by class  Adler32 and in 
main() method there are 2 object checksum,one is passing to CheckedInputStream 
object and another into CheckedOutputStream.

so after read and write process will have to check the value variable from 2 
object checksum it is same or not without affecting the result of text file.
so I think it's same with our homework that we have to hold variable that 
persist our uppercase result when it read and write the text file and than that 
variable can be compared and displayed into console.


________________________________
From: * ^ * <[email protected]>
To: Free Java Programming Online Training Course By Sang Shin 
<[email protected]>
Sent: Mon, October 19, 2009 9:02:44 PM
Subject: [java programming] Re: lab-1022:Java Stream I/O


On Oct 19, 11:35 am, "Firmansyah ." <[email protected]> wrote:
> IMO:
> for the text file maybe it is the same , i means no uppercase, because it is 
> filter so i just uppercase when read and write process and the result of the 
> uppercase displayed into console, so i just modify Adler32 class like this:
> public class Adler32 implements Checksum {
>
>     private int value = 1;
>     private StringBuffer uppercase=new StringBuffer("");
>
>     /*
>      * BASE is the largest prime number smaller than 65536
>      * NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
>      */
>     private static final int BASE = 65521;
>     private static final int NMAX = 5552;
>     private static final int cMin = Character.MIN_VALUE;
>     private static final int cMax = Character.MAX_VALUE;
>
>     /**
>      * Update current Adler-32 checksum given the specified byte.
>      */
>     public void update(int b) {
>         int s1 = value & 0xffff;
>         int s2 = (value >> 16) & 0xffff;
>         s1 += b & 0xff;
>         s2 += s1;
>         value = ((s2 % BASE) << 16) | (s1 % BASE);
>         if (b >= cMin || b <= cMax) {
>             uppercase.append(Character.toUpperCase((char) b));
>         }
>     }
>
>     /**
>      * Update current Adler-32 checksum given the specified byte array.
>      */
>     public void update(byte[] b, int off, int len) {
>         int s1 = value & 0xffff;
>         int s2 = (value >> 16) & 0xffff;
>
>         while (len > 0) {
>             int k = len < NMAX ? len : NMAX;
>             len -= k;
>             while (k-- > 0) {
>                 s1 += b[off++] & 0xff;
>                 s2 += s1;
>             }
>             s1 %= BASE;
>             s2 %= BASE;
>         }
>         value = (s2 << 16) | s1;
>         while(len > 0)
>         {
>             int k = len < cMax ? len : cMax;
>             len -= k;
>             while (k-- > 0) {
>                 uppercase.append(Character.toUpperCase((char) b[off++]));
>             }
>
>         }
>     }
>
>     /**
>      * Reset Adler-32 checksum to initial value.
>      */
>     public void reset() {
>         value = 1;
>     }
>
>     /**
>      * Returns current checksum value.
>      */
>     public long getValue() {
>         return (long) value & 0xffffffff;
>     }
>
>     /**
>      * @return the uppercase
>      */
>     public String getUppercase() {
>         return uppercase.toString();
>     }
>
> }
I have read the original Addler32 class repeatedly. However, I am
still clueless. Someone got any idea what this class does. Thank you.
>
> ________________________________
> From: DaveB <[email protected]>
> To: Free Java Programming Online Training Course By Sang Shin 
> <[email protected]>
> Sent: Mon, October 19, 2009 6:44:55 AM
> Subject: [java programming] Re: lab-1022:Java Stream I/O
>
> All:
> I am also having difficulty understanding what we are trying to
> achieve.  I do not understand why we need two more classes.  If the
> goal is to create the output file all in upper case, then why would we
> not just check the int from the read and subtract 32 like this:
>
> int c;
>        while ((c = in.read()) != -1)
>          out.write((c > 96 && c < 123)? (c-32):c);
>
> It produces the outagain.txt file:
>
> SO SHE WENT INTO THE GARDEN TO CUT A CABBAGE-LEAF, TO
> MAKE AN APPLE-PIE; AND AT THE SAME TIME A GREAT
> SHE-BEAR, COMING UP THE STREET, POPS ITS HEAD INTO THE
> SHOP. 'WHAT! NO SOAP?' SO HE DIED, AND SHE VERY
> IMPRUDENTLY MARRIED THE BARBER; AND THERE WERE
> PRESENT THE PICNINNIES, AND THE JOBLILLIES, AND THE
> GARYALIES, AND THE GRAND PANJANDRUM HIMSELF, WITH THE
> LITTLE ROUND BUTTON AT TOP, AND THEY ALL FELL TO PLAYING
> THE GAME OF CATCH AS CATCH CAN, TILL THE GUN POWDER RAN
> OUT AT THE HEELS OF THEIR BOOTS.
>
> SAMUEL FOOTE 1720-1777
>
> What am I missing?
>
> DaveB
>
> On Oct 17, 6:59 pm, "Firmansyah ." <[email protected]> wrote:
>
>
>
> > can anyone explain more briefly the homework in lab 1022 which said that 
> > "Use either ChangeToUpperCaseInputStream class or
> > ChangeToUpperCaseOutputStream class to convert the characters read to
> > upper case"?
>
> > is it using character stream to make so correctly read char, and then the 
> > return of method read() converted to char.
> > after this we call Character.toUpperCase(ch) method?



      
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to