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();
}
}
________________________________
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
-~----------~----~----~----~------~----~------~--~---