Re: Need basic help....
TheBigPJ wrote:
Final. Another other advice?
Overall it looks good.
---------------------------------------
import java.io.*;
class Q4 {
private char a;
private boolean charIsSet = false;
You actually don't need this explicit initialization, since member booleans
initialize to false anyway. Naturally you have to initialize local variables,
but instance and class members initialize to "zero-like" values (0, 0L, 0F,
0D, false, null).
try {
while (finished == false) {
Better would be: while ( ! finished ).
Why compare a boolean to a boolean to get a boolean, when it's already boolean?
if(temp.charAt(0) == '1')
Somewhat more compact and expressive:
switch( charAt(0) )
{
case '1': // do case 1
// blahblah
break;
case '2': // etc.
}
this.newa(temp.charAt(2));
You forgot the braces for this if body.
else if(temp.equals("2"))
{
if(m_charIsSet() == true)
{
System.out.println("You char value is: " + (int)this.returna() +
"." + savea() + "\n\n");
}
else
m_charIsSetErrorMessage();
You forgot the braces for this else body.
}
[snip]
public char returna() {
By convention, and to help certain auxiliary tools, methods that get a value
are called "getX()", where "X" is the upper-case-first version of the
property. You shold also capitalize the first letter of each word part in an
identifier, except the first letter of the identifier if it's a non-constant
variable or a method. As RedGrittyBrick told you already.
RGB:
There is a convention that "accessor" methods have names starting "get"
and that words within a variable name or method name are distinguished
by capitalizing the first letter of each word:
public boolean m_charIsSet()
Do not use underscores except in constants' names. What is "m", anyway? Most
languages that use an "m" prefix use it to indicate a member variable, but
this is a method.
By convention, methods that access a boolean property "X" are called "isX()".
This also helps certain auxiliary tools. It's part of the JavaBeans pattern.
{
return charIsSet;
By convention, but weaker than the other conventions, a boolean variable is
either an adjective ("alreadySet"), or an adjective preceded by "is" ("isSet").
}
public void m_charIsSetErrorMessage()
Get rid of the "m_" prefixes. It's probably (but not necessarily) better to
make the error message part of the logic that tries to use the isSet() method,
for example in main()
{
System.out.println("Your original character hasen't been sent.\n
\n");
}
public String savea() {
That should be "saveA()".
FileOutputStream fileOutput;
PrintStream printCommandThing;
try
{
fileOutput = new FileOutputStream("theChar.txt");
printCommandThing = new PrintStream( fileOutput );
This will use only the platform-default character encoding, which is fine here.
printCommandThing.println ((int)a);
printCommandThing.close();
}
catch (Exception e)
{
System.err.println ("You boo-booed!");
Who was it told you that this is not a sufficient exception handler? Ah, yes,
RedGrittyBrick. Review their advice upthread.
Notice that if "new FileOutputStream()" succeeds, but new PrintStream()
doesn't, that your stream sill never be closed. That's a Bad Thing. You need
a finally{} block.
[snip]
public boolean m_gt(char newChar)
public boolean gt( char other )
I avoid "new" as part of an identifier because it's a keyword, unless it's
really the right word. There's nothing "new" about "newChar", so it isn't.
Also, it's usually best to avoid putting implementation details (like Char) in
variable names. Here the "charness" is part of the problem domain so it's not
as bad.
[snip]
Damn TAB characters! Half my time writing this response was snipping out the
TABs.
--
Lew