Basic Java Help (BufferedReader and PrintWriter)

I am studying Java for part of my degree and have become quite stuck on a question. I have set up a seperate client class and that appears to work just fine, yet when i come to set up the server class i encounter no end of problems.
Firstly i have to set up a Server class which handles the communication to the client ;
import java.net.*;
import java.io.*;
public class Server
private ServerSocket ss;
private Socket socket;
//Streams for connections
private InputStream is;
private OutputStream os;
//Writer and reader for communication
private PrintWriter toClient;
private BufferedReader fromClient;
private GameSession game;
//use a high numbered non-dedicated port
static final int PORT_NUMBER = 3000;
//set up socket communication
public Server() throws IOException
ss = new ServerSocket(PORT_NUMBER);
//accept a player connection
public void acceptPlayer()
System.out.println("Waiting for player");
//wait for and accept a player
try
while(true)
//Loop endlessly waiting for client connections
// Wait for a connection request
socket = ss.accept();
openStreams();
//Client has connected
game.run(); <-- this i presume runs the method run() from the GameSession Class?
closeStreams();
socket.close();
catch(Exception e)
System.out.println("Trouble with a connection "+ e);
private void openStreams() throws IOException
final boolean AUTO_FLUSH = true;
is = socket.getInputStream();
fromClient = new BufferedReader(new InputStreamReader(is));
os = socket.getOutputStream();
toClient = new PrintWriter(os, AUTO_FLUSH);
System.out.println ("...Streams set up");
private void closeStreams() throws IOException
toClient.close();
os.close();
fromClient.close();
is.close();
System.out.println("...Streams closed down");
// This is the top-level method to handle one game
public void run() throws IOException
game = new GameSession(socket);
acceptPlayer();
System.out.println("Server closing down");
} // end class
which also seems to be about what the question asks, yet i have to link this to the GameSession class sending it a reference of the socket. Which i think i have with the inclusion of the new GameSession(socket).
When i come to write the GameSession class i realise i have to use the BufferedReader and PrintWriter when i try and do this i get a bindException as obviously the port is up and running from the Server class.
I have tried incorporating the openStreams() in the GameSession after rermoving them from the Server class but get more Exceptions! What am i doing wron and where would i find more information on this?
Thanks for any help you may give.

You must redesign your Server and GameSession class.
Study this code:
/* save and compile as GameServer.java */
import java.net.*;
import java.io.*;
public class GameServer{
  static final int PORT_NUMBER = 3000;
  private ServerSocket ss;
  GameSession game;
  public GameServer() throws IOException{
    ss = new ServerSocket(PORT_NUMBER);
    game = new GameSession();
  public void acceptPlayer(){
    System.out.println("Waiting for player");
    try{
      while(true){
        Socket s = ss.accept();
        new Thread(new ClientHandler(s)).start();
    catch(Exception e){
      System.out.println("Trouble with a connection "+ e);
  public static void main(String[] args){
    try{
      GameServer gs = new GameServer();
      gs.acceptPlayer();
    catch (Exception e){
      e.printStackTrace();
  class ClientHandler implements Runnable{
    private Socket socket;
    private PrintWriter toClient;
    private BufferedReader fromClient;
    public ClientHandler(Socket sc){
      socket = sc;
      try{
        fromClient
          = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        toClient = new PrintWriter(socket.getOutputStream(), true);
      catch (Exception e){
        e.printStackTrace();
    public void run() throws IOException{
      game.addNewClient(socket, fromClient, toClient);
}

Similar Messages

  • *Basic* Java help needed...

    I feel like a complete novice for posting this kinda stuff, but i figured somebody would take 5 minutes and help me out. My final in my programming class depends on 2 programs, one of which is giving me some actual trouble.
    What I have to do is create a java applet that allows a user to input their weight, select a planet, and then have their weight converted to what their weight would be on the selected planet. However, if the ouput is higher than 60 pounds, I need a picture of the michelin man to appear and the theme from star wars to play. If it is below 60, A multicolored asterisk should be displayed with applause.
    I will post what code I have already made. Please note: ITS VERY VERY BASIC. I may have overcomplicated some things, and there is always more than one way to do something (in my experience). Also, I kinda just converted a temperature conversion applet, so there may be some extra stuff I don't need.
    Please help.
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    public class tempsapp2 extends Applet implements ActionListener
    Label prompt1;
    TextField input1;
    Label prompt2;
    TextField input2;
    int number1, number2;
    int mercury, venus, earth, mars, jupiter, saturn, neptune, uranus, pluto, result;
    public void init()
    prompt1 = new Label ("Enter your weight:");
    add (prompt1);
    input1 = new TextField (10);
    add (input1);
    prompt2 = new Label ("Enter the Number of the Planet you would like to have your weight converted to:");
    add (prompt2);
    input2 = new TextField (10);
    add (input2);
    input2.addActionListener(this);
    add (input2);
    public void paint (Graphics g)
    number1 = Integer.parseInt(input1.getText());
    number2 = Integer.parseInt(input2.getText());
    mercury = (number1*3780)/1000;
    venus = (number1*9070)/1000;
    earth = (number1*10)/1000;
    mars = (number1*3770)/1000;
    saturn = (number1*9160)/1000;
    uranus = (number1*8890)/1000;
    neptune = (number1*1125)/1000;
    jupiter =  (number1*2364)/1000;
    pluto = (number1*670)/1000;
    if(number2==1)
    g.drawString("Your weight on Mercury would be "+mercury+" lbs",100,150);
    else if(number2==2)
    g.drawString("Your weight on Venus would be "+venus+" lbs",100,150);
    else if(number2==3)
    g.drawString("Your weight on Earth would be "+earth+" lbs",100,150);
    else if(number2==4)
    g.drawString("Your weight on Mars would be "+mars+" lbs",100,150);
    else if(number2==5)
    g.drawString("Your weight on Jupiter would be "+jupiter+" lbs",100,150);
    else if(number2==6)
    g.drawString("Your weight on Saturn would be "+saturn+" lbs",100,150);
    else if(number2==7)
    g.drawString("Your weight on Uranus would be "+uranus+" lbs",100,150);
    else if(number2==8)
    g.drawString("Your weight on Neptune would be "+neptune+" lbs",100,150);
    else if(number2==9)
    g.drawString("Your weight on Pluto would be "+pluto+" lbs",100,150);
    public void actionPerformed(ActionEvent evt)
      number1 = Integer.parseInt(input1.getText());
      number2 = Integer.parseInt(input2.getText());
      repaint();
    }

    I am guessing that you are wondering where to go from here. If so http://java.sun.com/products/plugin/1.5.0/demos/applets/Animator/Animator.java may prove helpful.
    Also I would recommend using arrays of planet names and weight multipliers. It could make your code a lot less cumbersome.

  • Sap basic java libs, JMON, JCO

    Hi,
    Iam applying patch 27 for the portal ep6 sp2. the current patch is ep6 sp2 patch3 with j2ee pl 19.
    Now first iam doing patch 4 for ep6 sp2 and then upgrading to patch 27.
    My question now is for upgrading to patch 4 what version of java libs, jmon and jco i should maintain and later for patch 27 what version of basic java lib, jmon and jco i should maintain.
    The patch4 document says to update basic javalibs, jmon and jco to the latest available one.
    The latest available patches are
    basic java lib - patch 18
    jmon - patch 19
    do anyone know how to do this. any documents are notes available ???
    Thanks for your help in advance
    regards
    Moses

    Hi Moses,
    here is what to you have to do:
    1. Patch the Software Delivery Manager (SDM) to the newest Patch Level (PL 14) - as described in SAP Note 532892
    2. Patch the J2EE Engine to the newest available patch (PL 30) - as described in SAP Note 738921
    3. Patch SAP Basic Java Libs 6.20 to Support Package 18 - as described in SAP Note 544979
    Make sure IRJ service is stopped as mentioned in the thread Basic Java Libs 16
    4. Patch JMON to Patch Level 19. Installation (path were to copy the files) is described in SAP Note 657143. Unfortunately this note is not released. If you don't have a user to see the note, here is in short what you have to do:
    - unzip the archive: "sapcar -xfv JMON_19*.SAR"
    - copy file jmonapi.jar to the following directories:
         - ...j2ee_<Instance_Nr>adminlib
         - ...j2ee_<Instance_Nr>admin     ools
         - ...j2ee_<Instance_Nr>clusterdispatcheradditional-lib
         - ...j2ee_<Instance_Nr>clusterserveradditional-lib
         - ...j2ee_<Instance_Nr>clusterstateadditional-lib
         - ...j2ee_<Instance_Nr>clusterserverservicesfileworklibs
         - ...j2ee_<Instance_Nr>clusterserverstatefileworklibs
    - copy file jmon.dll and sapccmsr.exe to the directory:
         - ...j2ee_<Instance_Nr>os_libs
    5. If needed, patch SAP Java Connector to Service Release 2.0.10 - as described in SAP Note 682686 and the there mentioned installation guide.
    6. Now you can go on patching the Portal first to Patch 4 and than to Patch 27 as described in the installation guides.
    Hope this helps,
    Robert
    PS: Please consider rewarding points to people like Dominik (and me) , who are spending a lot of their time to give helpful replies like in this thread: cross domain SSO-EP6

  • I'm in a java programming class and i'm stuck.. so please help me guys...

    Please help me, i really need help.
    Thanks a lot guys...
    this is my error:
    C:\Temp>java Lab2
    Welcome!
    This program computes the average, the
    exams
    The lowest acceptable score is 0 and th
    Please enter the minimum allowable scor
    Please enter the maximum allowable scor
    Was Exam1taken?
    Please Enter Y N or Q
    y
    Enter the Score for Exam1:
    65
    Was Exam2taken?
    Please Enter Y N or Q
    y
    Enter the Score for Exam2:
    32
    Was Exam3taken?
    Please Enter Y N or Q
    y
    Enter the Score for Exam3:
    65
    Was Exam4taken?
    Please Enter Y N or Q
    y
    Enter the Score for Exam4:
    32
    Was Exam5taken?
    Please Enter Y N or Q
    y
    Enter the Score for Exam5:
    32
    Score for Exam1 is:65
    Score for Exam2 is:32
    Score for Exam3 is:32
    Score for Exam4 is:32
    Score for Exam5 is:32
    the Minimum is:0
    the Maximum is:0
    Can't compute the Average
    Can't compute the Variance
    Can't compute the Standard Deviation
    this is my code:
    // Lab2.java
    // ICS 21 Fall 2002
    // Read in scores for a student's exams, compute statistics on them, and print out
    // the scores and statistics.
    public class Lab2
         // Create a manager for this task and put it to work
         public static void main(String[] args)
              ExamsManager taskManager = new ExamsManager();
              taskManager.createResults();
    // ExamsManager.java for Lab 2
    // ICS 21 Fall 2002
    // make these classes in the Java library available to this program.
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.text.NumberFormat;
    // ExamsManager creates managers and contains the tools (methods) they need to do their
    // job: obtaining exam information, computing statistics and printing out that information
    class ExamsManager
         // INVALID_INT: special integer value to indicate that a non-integer
         // was entered when an integer was requested. It's chosen so as not to
         // conflict with other flags and valid integer values
         public static final int INVALID_INT = -9999;
         // valid user response constants:
         public static final String YES = "Y";               // user responded "yes"
         public static final String NO = "N";               // user responded "no"
         public static final String EXIT_PROGRAM = "Q";     // user responded "leave the program NOW"
         // INVALID_RESPONSE: special String value to indicate that something other than
         // "Y", "N" or "X" was entered when said was required
         public static final String INVALID_RESPONSE = "!";
         // ABSOLUTE_MIN_SCORE and ABSOLUTE_MAX_SCORE represent the smallest
         // minimum score and the largest maximum score allowed by the
         // program. (The allowable minimum and maximum for one
         // execution of the program may be different than these, but
         // they must both lie within this range.)
         public static final int ABSOLUTE_MIN_SCORE = 0;
         public static final int ABSOLUTE_MAX_SCORE = 1000;
         // The manager needs a place to store this student's exams
         private OneStudentsWork thisWork;
         // ...places to store the min and max scores allowed for these exams
         private int minAllowedScore;
         private int maxAllowedScore;
         // ...and a place to hold input coming from the keyboard
         BufferedReader console;
         //                    -------------------- Constructor --------------------
         // ExamsManager() make managers that delegate the major tasks of the program
         public ExamsManager()
         //                    -------------------- Processing methods --------------------
         // createResults() is the "manager at work": it calls assistants to welcome the user,
         // initializes things so we can read info from the keyboard,
         // obtain the minimum and maximum allowed scores,
         // obtain a student's work and comute the statistics on it and
         // print out the scores and the statistics
         public void createResults()
              // *** YOUR CODE GOES HERE ***
              printWelcomeMessage();
              readyKeyboard();
              obtainMinAndMaxAllowedScores();
              obtainOneStudentsWork();
              printResults();
         //                    -------------------- User input methods --------------------
         // readyKeyboard() sets up an input stream object 'console' connected to the keyboard
         // so that what's typed can be read into the program and processed.
         // Do not modify this code!
         private void readyKeyboard()
                   console = new BufferedReader(new InputStreamReader(System.in));
         // obtainMinAndMaxAllowedScores() asks the user to enter the minimum
         // and maximum allowable scores for this execution of the program.
         // Both the minimum and maximum allowable scores must be between
         // ABSOLUTE_MIN_SCORE and ABSOLUTE_MAX_SCORE (inclusive). This
         // method should continue to ask the user for a minimum until a
         // valid one is entered (or EXIT_PROGRAM is entered), then continue
         // to ask the user for a maximum until a valid one is entered. If
         // the minimum entered is greater than the maximum entered, the
         // whole thing should be done again.
         public void obtainMinAndMaxAllowedScores()
              // *** YOUR CODE GOES HERE ***
              int response = INVALID_INT;
              if (response >= minAllowedScore && response <= maxAllowedScore)
                   System.out.print("Please enter the minimum allowable score:");
                   response = getIntOrExit();
              while (response > maxAllowedScore || response < minAllowedScore)
                   System.out.print("Please enter the minimum allowable score:");
                   response = getIntOrExit();
              if (response <= ABSOLUTE_MAX_SCORE && response >= ABSOLUTE_MIN_SCORE)
                   System.out.print("Please enter the maximum allowable score:");
                   response = getIntOrExit();
              while (response > ABSOLUTE_MAX_SCORE || response < ABSOLUTE_MIN_SCORE)
                   System.out.print("Please enter the maximum allowable score:");
                   response = getIntOrExit();
              /*int response;
              String allowedMin;
              boolean done = true;
              do
                   done = true;
                   System.out.print("Please enter the minimum allowable score:");
                   response = getIntOrExit();
                   allowedMin = getYNOrExit();
                   if(allowedMin == EXIT_PROGRAM)
                        System.exit(0);
                   else if (response >= ABSOLUTE_MIN_SCORE)
                        done = true;
                   else if (response >= ABSOLUTE_MAX_SCORE)
                        done = false;
                        System.out.println("INVALID: " + INVALID_INT);
                        System.out.print("Please enter the minimum allowable score:");
                        response = getIntOrExit();
              }while (!done);
    /*          System.out.print("Please enter the maximum allowable score:");
              response = getIntOrExit();
              if (response <= ABSOLUTE_MAX_SCORE)
              return response;
              else if (response <= ABSOLUTE_MIN_SCORE)
                   response = INVALID_INT;
              while (response == INVALID_INT)
                   System.out.print("Please enter the maximum allowable score:");
                   response = getIntOrExit();
              do
                   done = true;
                   System.out.print("Please enter the minimum allowable score:");
                   response = getIntOrExit();
                   String allowedMax;
                   if(allowedMin == EXIT_PROGRAM)
                        System.exit(0);
                   if (response <= ABSOLUTE_MAX_SCORE)
                        done = true;
                   else if (response <= ABSOLUTE_MIN_SCORE)
                        done = false;
                        System.out.println("INVALID: " + INVALID_INT);
                        System.out.print("Please enter the maximum allowable score:");
                        response = getIntOrExit();
              }while (!done);
         // The overall strategy to building up a student work object is
         // to have the student-bulding method call on the exam-building
         // method, which calls upon user input methods to get exam info.
         // Thus, user entered info is successively grouped together
         // into bigger units to build the entire student information set.
         // obtainOneStudentsWork() builds the five exams
         // and constructs the student work object from them
         private void obtainOneStudentsWork()
              // *** YOUR CODE GOES HERE ***
              int index = 1;
              Exam exam1 = buildOneExam(index);
              index = 2;
              Exam exam2 = buildOneExam(index);
              index = 3;
              Exam exam3 = buildOneExam(index);
              index = 4;
              Exam exam4 = buildOneExam(index);
              index = 5;
              Exam exam5 = buildOneExam(index);
              thisWork = new OneStudentsWork(exam1, exam2, exam3, exam4, exam5);
         // buildOneExam(thisTest) reads the exam information for one exam and returns an
         // Exam object constructed from this information. Uses obtainWasExamTaken() to
         // determine if the exam was taken and obtainOneScore() to get the exam score, if needed.
         private Exam buildOneExam(int thisTest)
              // *** YOUR CODE GOES HERE ***
              int score = 0;
              if(obtainWasExamTaken(thisTest))
                   score = obtainOneScore(thisTest);
              return new Exam(score);
              else
              return new Exam();
              System.out.println("Enter score for exam1:");
              Exam exam1 = new Exam(getIntOrExit());
              System.out.println("Enter score for exam2:");
              Exam exam2 = new Exam(getIntOrExit());
              System.out.println("Enter score for exam3:");
              Exam exam3 = new Exam(getIntOrExit());
              System.out.println("Enter score for exam4:");
              Exam exam4 = new Exam(getIntOrExit());
              System.out.println("Enter score for exam5:");
              Exam exam5 = new Exam(getIntOrExit());
         // obtainWasExamTaken(thisTest) keeps asking the user whether 'thisTest' was taken
         // (e.g., "Was exam 1 taken? Enter Y, N or Q", if thisTest equals 1)
         // until s/he provides a valid response. If Q is entered, we leave the
         // program immediately; if Y or N (yes or no), return true if yes, false if no
         private boolean obtainWasExamTaken(int thisTest)
              // *** YOUR CODE GOES HERE ***
              String response = INVALID_RESPONSE;
              System.out.println("Was Exam" + thisTest + "taken?");
              while (response.equals(INVALID_RESPONSE))
                   System.out.println("Please Enter" + " " + YES + " " + NO + " " + "or" + " " + EXIT_PROGRAM);
                   response = getYNOrExit();
              if (response.equals(YES))
              return true;
              else
              return false;
         // obtainOneScore(thisTest) keeps asking the user to enter a score for
         // 'thisTest' (e.g., "Enter the score for exam 1", is thisTest equals 1)
         // until s/he provides one within range or s/he tells us to exit the program.
         private int obtainOneScore(int thisTest)
              // *** YOUR CODE GOES HERE ***
              int response = INVALID_INT;
              if (response >= minAllowedScore && response <= maxAllowedScore);
                   System.out.println("Enter the Score for Exam" + thisTest + ":");
                   response = getIntOrExit();
              while (response > ABSOLUTE_MAX_SCORE || response < ABSOLUTE_MIN_SCORE)
                   System.out.println("INVALID: " + INVALID_INT);
                   System.out.println("Please Enter again:");
                   response = getIntOrExit();
              return response;
         // scoreIsWithinRange() returns true if the given score is inside of
         // the allowable range and false if it is out of range
         private boolean scoreIsWithinRange(int score)
              // *** YOUR CODE GOES HERE ***
              if (score >= minAllowedScore && score <= maxAllowedScore)
                   return true;
              else
                   return false;
         // getYNQ() reads a String from the console and returns it
         // if it is "Y" or "N" or exits the program if "Q" is entered;
         // the method returns INVALID_RESPONSE if the response is other
         // than"Y", "N" or "Q".
         // Do not modify this code!
         private String getYNOrExit()
              String usersInput = INVALID_RESPONSE;
              try
                   usersInput = console.readLine();
              catch (IOException e)
                   // never happens with the keyboard...
              usersInput = usersInput.toUpperCase();
              if (usersInput.equals(EXIT_PROGRAM))
                   System.out.println("Leaving...");
                   System.exit(0);
              if (usersInput.equals(YES) || usersInput.equals(NO))
                   return usersInput;
              else
                   return INVALID_RESPONSE;
         // getIntOrExit() reads an integer from the console and returns it.
         // If the user types in "Q", the program exits. If an integer is entered,
         // it is returned. If something that is not an integer (e.g. "Alex"), the
         // program returns INVALID_INT
         // Do not modify this code!
         private int getIntOrExit()
              String usersInput = "";
              int theInteger = 0;
              try
                   usersInput = console.readLine();
              catch (IOException e)
                   // never happens with the keyboard...
              // if the user wants to quit, bail out now!
              if(usersInput.toUpperCase().equals(EXIT_PROGRAM))
                   System.out.println("Program halting at your request.");
                   System.exit(0);
              // see if we have an integer
              try
                   theInteger = Integer.parseInt(usersInput);
              catch (NumberFormatException e)
                   // user's input was not an integer
                   return INVALID_INT;
              return theInteger;
         //                    -------------------- User output methods --------------------
         // printWelcomeMessage() prints a welcome message to the user explaining
         // what the program does and what it expects the user to do. In
         // particular, it needs to tell the user the absolute lowest and
         // highest acceptable exam scores
         private void printWelcomeMessage()
              // *** YOUR CODE GOES HERE ***
              System.out.println("Welcome!");
              System.out.println("This program computes the average, the variance, and the standard deviation of 5 exams");
              System.out.println("The lowest acceptable score is 0 and the highest is 1000");
         // printResults() prints all of the scores present, then prints the
         // statistics about them. The statistics that can have factional parts
         // -- average, variance and standard deviation -- should be printed with
         // exactly three digits after the decimal point. If a statistic could not be
         // computed, a message to that effect should print (NOT the "phony" value stored
         // in the statistic to tell the program that the statistic could not be computed).
         public void printResults()
              // These statements create a NumberFormat object, which is part
              // of the Java library. NumberFormat objects know how to take
              // doubles and turn them into Strings, formatted in a particular
              // way. First, you tell the NumberFormat object (nf) how you'd like
              // the doubles to be formatted (in this case, with exactly 3
              // digits after the decimal point). When printing a double you call
              // format to format it -- e.g. nf.format(the-number-to-format)
              NumberFormat nf = NumberFormat.getInstance();
              nf.setMinimumFractionDigits(3);
              nf.setMaximumFractionDigits(3);
              // *** YOUR CODE GOES HERE ***
              System.out.println("Score for Exam1 is:" + thisWork.getExam1().getScore());
              System.out.println("Score for Exam2 is:" + thisWork.getExam2().getScore());
              System.out.println("Score for Exam3 is:" + thisWork.getExam3().getScore());
              System.out.println("Score for Exam4 is:" + thisWork.getExam4().getScore());
              System.out.println("Score for Exam5 is:" + thisWork.getExam5().getScore());
              if (thisWork.getStatistics().getMinimum() == Statistics.CANT_COMPUTE_STATISTIC)
                   System.out.println("Can't compute the Minimum");
              else
                   System.out.println("the Minimum is:" + thisWork.getStatistics().getMinimum());
              if (thisWork.getStatistics().getMaximum() == Statistics.CANT_COMPUTE_STATISTIC)
                   System.out.println("Can't compute the Minimum");
              else
                   System.out.println("the Maximum is:" + thisWork.getStatistics().getMaximum());
              if (thisWork.getStatistics().getAverage() == Statistics.CANT_COMPUTE_STATISTIC)
                   System.out.println("Can't compute the Average");
              else
                   System.out.println("the Average is:" + thisWork.getStatistics().getAverage());
              if (thisWork.getStatistics().getVariance() == Statistics.CANT_COMPUTE_STATISTIC)
                   System.out.println("Can't compute the Variance");
              else
                   System.out.println("the Variance is:" + thisWork.getStatistics().getVariance());
              if (thisWork.getStatistics().getStandardDeviation() == Statistics.CANT_COMPUTE_STATISTIC)
                   System.out.println("Can't compute the Standard Deviation");
              else
                   System.out.println("the Standard Deviation is:" + thisWork.getStatistics().getStandardDeviation());
    // OneStudentsExams.java for Lab 2
    // ICS 21 Fall 2002
    // OneStudentsWork is the exams and the statistics computed from
    // them that comprise one student's work
    class OneStudentsWork
         public static final int NUMBER_OF_EXAMS = 5;
         // The student is offered five exams...
         private Exam exam1;
         private Exam exam2;
         private Exam exam3;
         private Exam exam4;
         private Exam exam5;
         // The statistics on those exams
         Statistics studentStats;
         //                    -------------------- Constructor --------------------
         // Takes five constructed exam objects and store them for this student.
         // Constructs a statistics object that holds the stats for these exams and
         // store it in studentStats.
         public OneStudentsWork(Exam test1, Exam test2, Exam test3, Exam test4, Exam test5)
              // *** YOUR CODE GOES HERE ***
              exam1 = test1;
              exam2 = test2;
              exam3 = test2;
              exam4 = test4;
              exam5 = test5;
              studentStats = new Statistics(test1, test2, test3, test4, test5);
         //                    -------------------- Accessor methods --------------------
         // getExamX() methods make available ExamX
         public Exam getExam1()
              return exam1;
         public Exam getExam2()
              return exam2;
         public Exam getExam3()
              return exam3;
         public Exam getExam4()
              return exam4;
         public Exam getExam5()
              return exam5;
         // getStatistics() makes available the Statistics object that is part of this student's work
         public Statistics getStatistics()
              return studentStats;
    // Statistics.java for Lab 2
    // ICS 21 Fall 2002
    // A Statistics object stores the statistics for a group of Exams.
    class Statistics
         // This constant denotes a statistic that cannot be
         // computed, such as an average of zero scores or a variance
         // of one score.
         public static final int CANT_COMPUTE_STATISTIC = -9999;
         // The stats
         private int minimum;
         private int maximum;
         private int numberOfExamsTaken;
         private double average;
         private double variance;
         private double standardDeviation;
         //                    -------------------- Constructor --------------------
         // Calculates (initializes) the statistics, using passed-in exams.
         // Note that the order of computing thst stats matters, as some
         // stats use others; for instance, variance must be computed before
         // standard deviation.
         public Statistics(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              calculateAverage(exam1,exam2,exam3,exam4,exam5);
              calculateVariance(exam1,exam2,exam3,exam4,exam5);
              calculateStandardDeviation(exam1,exam2,exam3,exam4,exam5);
         //                    -------------------- Accessor methods --------------------
         // getNumberOfExamsTaken() makes available the number of exams this student undertook
         public int getNumberOfExamsTaken()
              return numberOfExamsTaken;
         // getMinimum() makes the minimum available
         public int getMinimum()
              return minimum;
         // getMaximum() makes the maximum available
         public int getMaximum()
              return maximum;
         // getAverage() makes the average available
         public double getAverage()
              return average;
         // getVariance() make the variance available
         public double getVariance()
              return variance;
         // getStandardDeviation() make the standard deviation available
         public double getStandardDeviation()
              return standardDeviation;
         //                    -------------------- Statistics methods --------------------
         //     ---> Note: all statistics are to be computed using the number of exams taken
         // calculateNumberOfExamsTaken() computes the number of tests the student took
         // and stores the result in 'numberOfExamsTaken'
         // (Note this statistic can always be computed.)
         private void calculateNumberOfExamsTaken(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              numberOfExamsTaken = OneStudentsWork.NUMBER_OF_EXAMS;
         // calculateMinimum() sets 'minimum' to the minimum score of exams taken, or
         // to CANT_COMPUTE_STATISTIC if a minimum can't be computed.
         private void calculateMinimum(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              /*min = exam1.getScore();
              if (min > exam2.getScore())
                   min = exam2.getScore();
              if (min > exam3.getScore())
                   min = exam3.getScore();
              if (min > exam4.getScore())
                   min = exam4.getScore();
              if (min > exam5.getScore())
                   min = exam5.getScore();
              if(numberOfExamsTaken == 0)
                   minimum = CANT_COMPUTE_STATISTIC;
              else if(numberOfExamsTaken == 1)
                   minimum = exam1.getScore();
              else
                   minimum = exam1.getScore();
                   if(numberOfExamsTaken >= 2 && numberOfExamsTaken <= minimum)
                        minimum = exam2.getScore();
                   if(numberOfExamsTaken >= 3 && numberOfExamsTaken <= minimum)
                        minimum = exam3.getScore();
                   if(numberOfExamsTaken >= 4 && numberOfExamsTaken <= minimum)
                        minimum = exam4.getScore();
                   if(numberOfExamsTaken >= 5 && numberOfExamsTaken <= minimum)
                        minimum = exam5.getScore();
              if (getMinimum() == ExamsManager.ABSOLUTE_MIN_SCORE)
                   minimum = exam1.getScore();
                   //exam1.getScore() = getMinimum();
              else
                   exam1.getScore() = CANT_COMPUTE_STATISTIC;
         // calculateMaximum() sets 'maximum' to the maximum score of exams taken, or
         // to CANT_COMPUTE_STATISTIC if a maximum can't be computed.
         private void calculateMaximum(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              /*if (maximum == ExamsManager.ABSOLUTE_MAX_SCORE)
              return true;
              else
              return CANT_COMPUTE_STATISTIC;*/
              max = exam1.getScore();
              if (max < exam2.getScore())
                   max = exam2.getScore();
              if (max < exam3.getScore())
                   max = exam3.getScore();
              if (max < exam4.getScore())
                   max = exam4.getScore();
              if (max < exam5.getScore())
                   max = exam5.getScore();
              if(numberOfExamsTaken == 0)
                   maximum = CANT_COMPUTE_STATISTIC;
              else if(numberOfExamsTaken == 1)
                   maximum = exam1.getScore();
              else
                   maximum = exam1.getScore();
                   if(numberOfExamsTaken >= 2 && numberOfExamsTaken >= maximum)
                        maximum = exam2.getScore();
                   if(numberOfExamsTaken >= 3 && numberOfExamsTaken >= maximum)
                        maximum = exam3.getScore();
                   if(numberOfExamsTaken >= 4 && numberOfExamsTaken >= maximum)
                        maximum = exam4.getScore();
                   if(numberOfExamsTaken >= 5 && numberOfExamsTaken >= maximum)
                        maximum = exam5.getScore();
         // calculateAverage() computes the average of the scores for exams taken and
         // stores the result in 'average'. Set to CANT_COMPUTE_STATISTIC if there
         // are no tests taken.
         private void calculateAverage(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              if (numberOfExamsTaken == 5)
                   average = (exam1.getScore()+exam2.getScore()+exam3.getScore()+exam4.getScore()+exam5.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
              else if (numberOfExamsTaken == 4)
                   average = (exam1.getScore()+exam2.getScore()+exam3.getScore()+exam4.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
              else if (numberOfExamsTaken == 3)
                   average = (exam1.getScore()+exam2.getScore()+exam3.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
              else if (numberOfExamsTaken == 2)
                   average = (exam1.getScore()+exam2.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
              else if (numberOfExamsTaken == 1)
                   average = (exam1.getScore()/OneStudentsWork.NUMBER_OF_EXAMS);
              else if (numberOfExamsTaken == 0)
                   average = CANT_COMPUTE_STATISTIC;
         // calculateVariance() calculates the returns the variance of the
         // scores for exams taken and stores it in 'variance'
         // For a small set of data (such as this one), the formula for calculating variance is
         // the sum of ((exam score - average) squared) for scores of exams taken
         // divided by (the number of scores - 1)
         // Set to CANT_COMPUTE_STATISTIC if there are fewer than two tests taken.
         private void calculateVariance(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              if (numberOfExamsTaken == 5)
                   variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average)+(exam3.getScore()-average)*(exam3.getScore()-average)+(exam4.getScore()-average)*(exam4.getScore()-average)+(exam5.getScore()-average)*(exam5.getScore()-average))/4;
              else if (numberOfExamsTaken == 4)
                   variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average)+(exam3.getScore()-average)*(exam3.getScore()-average)+(exam4.getScore()-average)*(exam4.getScore()-average))/4;
              else if (numberOfExamsTaken == 3)
                   variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average)+(exam3.getScore()-average)*(exam3.getScore()-average))/4;
              else if (numberOfExamsTaken == 2)
                   variance = ((exam1.getScore()-average)*(exam1.getScore()-average)+(exam2.getScore()-average)*(exam2.getScore()-average))/4;
              else if (numberOfExamsTaken < 2)
                   variance = CANT_COMPUTE_STATISTIC;
         // calculateStandardDeviation() calculates the standard
         // deviation of the scores of taken exams and stores
         // it in 'standardDeviation'
         // The formula for calculating standard deviation is just
         // the square root of the variance
         private void calculateStandardDeviation(Exam exam1, Exam exam2, Exam exam3, Exam exam4, Exam exam5)
              // *** YOUR CODE GOES HERE ***
              if (variance == CANT_COMPUTE_STATISTIC)
                   standardDeviation = CANT_COMPUTE_STATISTIC;
              else
                   standardDeviation = (Math.sqrt(variance));
    // Exam.java for Lab 2
    // ICS 21 Fall 2002
    // An Exam object stores information about one exam
    class Exam
         private boolean examTaken;     //was the exam taken? true for yes, false for no
         private int score;               //the exam's score; = 0 if test not taken
         //                    -------------------- Constructors --------------------
         // Construct a taken exam; it has score 's'
         public Exam(int s)
              score = s;
              examTaken = true;
         // Construct an exam not taken; it has a score of 0
         public Exam()
              score = 0;
              examTaken = false;
         //                    -------------------- Accessor methods --------------------
         // Make the score of an exam available
         public int getScore()
              return score;
         // Make available whether an exam was taken
         public boolean wasTaken()
              return examTaken;

    Your code is absolutely unreadable - even if someone was willing to
    help, it's simply impossible. I do give you a few tips, though: If you
    understand your code (i.e. if it really is YOUR code), you should be
    able to realize that your minimum and maximum never get set (thus they
    are both 0) and your exam 3 is set with the wrong value. SEE where
    those should get set and figure out why they're not. Chances are you
    are doing something to them that makes one 'if' fail or you just
    erroneously assign a wrong variable!

  • Help! java wont download and I NEED it!

    Okay so I have tried to download every version of java I can and none of them are working and I need it for my website. I have os x 10.4.8 Tiger so I don't know why it won't work. Can anyone please help me out with this? Thank You.

    Well java should be installed by default as part of Mac OS X. I'm pretty sure both the Java runtime environment AND the software development kit should be included. Maybe be more specific with your question, I might be missing something.

  • Help needed with Java 1.4 and xml Runtime problem

    I am working on a java 1.3 and JAXP1.1 written code. Now I want to compile and run it using J2SE 1.4. Here are the import statements from the existing code.
    import org.xml.sax.*;
    import org.xml.sax.helpers.DefaultHandler;
    import org.xml.sax.Locator;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.Attributes;
    import org.xml.sax.XMLReader;
    import org.xml.sax.InputSource;
    import java.sql.*;
    import java.net.*;
    import java.io.*;
    When I run the existing(using java 1.3 and Jaxp1.1) code I have to include the files crimson.jar and jaxp.jar in the windows 2000 CLASSPATH and works fine.
    But when I compile and run it using J2SE 1.4 which has the built in support for the saxp, I thought that I don't have to specify any CLASSPATH for the new 1.4 so I don't specify any Classpath and it gives me the Microsoft "ClassFactory cannot find the requested class" error which means that even thought the new java 1.4 has the xml classes as libraries yet it still requies some .jar files to be listed in the CLASSPATH.
    If I am right then what path will work(i.e what jar class I need to add to the CLASSPATH).
    Thanks for your help.
    RA.

    Thanks for your reply,
    I think I didn't specify when the error occurs. The ClassFactory related error occurs when I run the program, it compiles without any error.
    From what I understood somewhere in the java 1.4 docs, that the new 1.4 has the xml libraries built in by default so one doesn't need to give the classpaths just like we don't give any CLASSPATH for using swing and many of the other java packages. That is one thing.
    Second thing is that I also tried to use the java_xml_pack-spring02 and java_xml_pack-summer02; but non of them include the crimson.jar and the jaxp.jar files in them which are the 2 .jar files that makes the program run fine when used under the java 1.3 with combination of the jaxp1.1(which was downloaded seperately and then the CLASSPATH for it was set.).
    Can you please help what .jar files do I need to use instead. I tried to use the ones that the new java_xml_pack-spring02 and java_xml_pack-summer02 has for the jaxp in them.
    Thanks again.
    RA

  • Can someone pls help me with java on my macbook pro because after i download the mountain lion java has died and i need java to see streaming quotes from stock market

    can someone pls help me with java on my macbook pro because after i download the mountain lion java has died and i need java to see streaming quotes from stock market

    Java is no longer included in Mac OS X by default. If you want Java, you will have to install it.
    However, note that you should think twice before installing Java for such a trivial need as looking at stock market quotes. There are other ways to get that information that don't involve Java, and using Java in your web browser is a HUGE security risk right now. Java has been vulnerable to attack almost constantly for the last year, and has become a very popular, frequently used method for getting malware installed via "drive-by downloads." You really, truly don't want to be using it. See:
    Java is vulnerable… Again?!
    http://java-0day.com

  • Winhelp Help system and Java

    Hello,
    Of the several products we develop, one, a Java program, uses the Java Help help system (logically). The others use a standard Winhelp help system (developed in Robohelp). Our current workflow for developing a help system for the Java program is to batch convert the Winhelp RTF files into HTML files. The problem is, most of our Winhelp formatting is either dropped or incorrectly represented in the Java help file. Also, I prefer the look and feel of a Winhelp system over Java.
    Is it possible for a Java program to be modified so that it supports a Winhelp help system and not a Java Help system? If so, how is this done, and where can one find information on the process?
    If not, what options do we have to "pretty up" the Java output from the conversion?
    Thanks!
    Todd

    Thanks for your response. Could you direct me to a resource that explains the steps for accomplishing this? I'll need to provide the development staff with instructions.
    Thanks again!

  • URGENT- PLEASE HELP: java.lang.threads and BC4J

    Hi,
    according to my issue "no def found for view" in the same titled thread I'm wondering how you would implement asynchronous calls of methods that use BC4J to update a couple of data.
    To be more precise:
    A requirement of our software is to start an update database job, which can take a couple of minutes/hours, from the web browser. Before it will be executed the logged-in user receives a notification that this batch job has been started.
    I dont't want to use JMS overhead and MD Beans for this simple requirement, therefore I implemented a class that extends java.lang.Thread and put all the update codings within the run method. After having called the start-method of the thread I get a JBO-25022(No XML file found) error when I try to set a new value for an attribute of the row. The row consists of attributes which belong to four entity objects that mus be updated.
    When calling the run method directly, everything works fine.
    My questions:
    * do you know any workaround how to make the xml files
    reachable?
    * how would you implement anschronous calls of long time-
    consuming jobs?
    * is this a bug of BC4J?
    Any help, tip, hint is really appreciated.
    Stefan

    Arno,
    many thanks for your reply:
    Here is an excerpt of the source code of my thread "Aenderungsdienst":
    public class Aenderungsdienst extends java.lang.Thread
    private SviAdministrationModuleImpl mSviModul;
    // Application module that contains view object
    // IKViewImpl
    public Aenderungsdienst(SviAdministrationModuleImpl aSviModul)
    mSviModul = aSviModul;
    public void run()
    ausfuehrenAenderungsdienst(mAenderungsdienstNr); <--error within this methode
    private int ausfuehrenAenderungsdienst(String aAenderungsdienstNr)
    int rAnzahlSaetze = 0;
    try
    IkViewImpl aenderungen = mSviModul.getIkView();
    aenderungen.suchenAenderungssaetze(aAenderungsdienstNr); <-- method within View Object Impl that executes a query with customized where-clauses
    if ((rAnzahlSaetze = aenderungen.getRowCount()) > 0)
    IkViewRowImpl ik = null;
    while (aenderungen.hasNext())
    ik = (IkViewRowImpl) aenderungen.next();
    ik.setBestandsstatus("B"); <-- error occurs here when setting the status of a current row in my rowset to "B"
    mSviModul.getTransaction().postChanges();
    mSviModul.getTransaction().commit();
    catch (Exception e)
    e.printStackTrace();
    mSviModul.getTransaction().rollback();
    //todo: Verarbeitungsprotokoll erstellen
    return rAnzahlSaetze;
    This thread will be called by the application module "sviAdministrationModuleImpl":
    public void ausfuehrenAenderungsdienst(String
    aAenderungsdienstNr)
    Aenderungsdienst aenderungsdienst = new
    Aenderungsdienst(this);
    aenderungsdienst.setAenderungsdienstNr
    (aAenderungsdienstNr);
    aenderungsdienst.start();
    Using the start() method of the thread causes this exception:
    [653] No xml file: /hvbg/svi/model/businessobjects/businessobjects.xml, metaobj = hvbg.svi.model.businessobjects.businessobjects
    [654] Cannot Load parent Package : hvbg.svi.model.businessobjects.businessobjects
    [655] Business Object Browsing may be unavailable
    [656] No xml file: /hvbg/svi/model/businessobjects/IK_Inlandsbankverb.xml, metaobj = hvbg.svi.model.businessobjects.IK_Inlandsbankverb
    09.03.2004 10:27:41 hvbg.common.businessobjects.HvbgEntityImpl setAttributeInternal
    SCHWERWIEGEND: Fehler beim Setzen des Attributs 1 im Entity Objekt: JBO-25002: Definition hvbg.svi.model.businessobjects.IK_Inlandsbankverb vom Typ Entitätszuordnung nicht gefunden.
    09.03.2004 10:27:42 hvbg.svi.model.dienste.Aenderungsdienst ausfuehrenAenderungsdienst
    SCHWERWIEGEND: Beim Ausführen des Aenderungsdienstes 618 trat während der DB-Aktualisierung ein schwerer Fehler auf:
    JBO-25002: Definition hvbg.svi.model.businessobjects.IK_Inlandsbankverb vom Typ Entitätszuordnung nicht gefunden.
    oracle.jbo.NoDefException: JBO-25002: Definition hvbg.svi.model.businessobjects.IK_Inlandsbankverb vom Typ Entitätszuordnung nicht gefunden.
         at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:328)
         at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:268)
         at oracle.jbo.server.MetaObjectManager.findMetaObject(MetaObjectManager.java:649)
         at oracle.jbo.server.EntityAssociation.findEntityAssociation(EntityAssociation.java:98)
         at oracle.jbo.server.AssociationDefImpl.resolveEntityAssociation(AssociationDefImpl.java:725)
         at oracle.jbo.server.AssociationDefImpl.getEntityAssociation(AssociationDefImpl.java:135)
         at oracle.jbo.server.AssociationDefImpl.hasContainer(AssociationDefImpl.java:546)
         at oracle.jbo.server.AssociationDefImpl.getContainer(AssociationDefImpl.java:468)
         at oracle.jbo.server.EntityImpl.getContainer(EntityImpl.java:1573)
         at oracle.jbo.server.EntityImpl.setValidated(EntityImpl.java:1649)
         at oracle.jbo.server.EntityImpl.setAttributeValueInternal(EntityImpl.java:2081)
         at oracle.jbo.server.EntityImpl.setAttributeValue(EntityImpl.java:1985)
         at oracle.jbo.server.AttributeDefImpl.set(AttributeDefImpl.java:1700)
         at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:946)
         at hvbg.common.businessobjects.HvbgEntityImpl.setAttributeInternal(HvbgEntityImpl.java:56)
         at hvbg.svi.model.businessobjects.IKImpl.setBestandsstatus(IKImpl.java:174)
         at hvbg.svi.model.businessobjects.IKImpl.setAttrInvokeAccessor(IKImpl.java:770)
         at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:859)
         at oracle.jbo.server.ViewRowStorage.setAttributeValue(ViewRowStorage.java:1108)
         at oracle.jbo.server.ViewRowStorage.setAttributeInternal(ViewRowStorage.java:1019)
         at oracle.jbo.server.ViewRowImpl.setAttributeInternal(ViewRowImpl.java:1047)
         at hvbg.svi.model.dataviews.IkViewRowImpl.setBestandsstatus(IkViewRowImpl.java:264)
         at hvbg.svi.model.dienste.Aenderungsdienst.ausfuehrenAenderungsdienst(Aenderungsdienst.java:337)
         at hvbg.svi.model.dienste.Aenderungsdienst.run(Aenderungsdienst.java:290)
    Using run(), everything works perfectly.
    The view object IKView consists of four entity objects which are linked by associations. There exists an association between the entity objects ik and inlandbankverb. The xml-file for the association object is named "ik_inlandsbankverb.xml". It seems so that this definition could not be found when calling my thread in asynchronous (via start()-method call) mode.
    Is this a bug of JDeveloper?
    Thanks in advance,
    Stefan

  • I am trying to print redplum coupons and I can't, help.  I have updated java, adobe flash, and made sure my printer was set on default.  I am not sure what I am doing wrong.  I have contacted redplum and no one will help.

    I am trying to print redplum coupons and I can't, help.  I have updated java, adobe flash, and made sure my printer was set on default.  I am not sure what I am doing wrong.  I have contacted redplum and no one will help.

    No Apple response???  Redplum/Valassis will not help either.  I searched, using the cups error message and though it is Unbuntu, same error so maybe useful...only problem: details would not display unless I join Unbuntu forum.  What a pain to do anything with my Mac or find any help.  I honestly regret buying this buggy OS.
    Anyway, here is what I found, FYI:
    http://ubuntuforums.org/showthread.php?t=483415
    As the old saying goes: when in doubt, consult the manual. The problem appears to be that I added the printer using the KDE Add Printer Wizard. It was automatically given a "socket" URI instead of an "lpd" one. When I:
    - altered the printer settings at http://localhost:631 (the CUPS admin page) as instructed in the manual for the printer, and
    - copied the PPD file into a second place on the hard drive (as instructed on ubunutuforums, see the link above)
    ..everything started working.
    It's still slower than windows, but I can live with that
    Probably a simple fix. Change the socket I.P. to match the printer I.P. like this:
    socket://192.168.1.86:9100. The thing I'm concerned with using socket:// is that AFAIK the printer I.P. must not change. In my case I'm able to assign a static I.P. address to the printer but it's something to consider.
    I found that the only thing I needed to do was change socket to lpd (and remove :9100 off the end as well). See Solving Ubuntu printer “broken pipe” problem (DocuPrint C525A) . BTW thanks for steering me in the right direction - very grateful.      
    Solving Ubuntu printer “broken pipe” problem (DocuPrint C525A)
    Posted on November 25, 2008
    Are you having a problem with your printer under the latest versions of Ubuntu (perhaps it worked under an older version)? Are you able to print short documents, but not longer, or more graphics-intensive, documents? (e.g. the unfortunate people at http://ubuntuforums.org/showthread.php?t=625493). Do they sit there as Processing for ages and then switch to Held? If you have the same problem I had the solution I tried may work for you too. Firstly, check your cups error log:
    sudo gedit /var/log/cups/error_log
    If you see anything like the following, the solution may be simple:
    [Job 201] Unable to write print data: Broken pipe
    PID 13359 (/usr/lib/cups/backend/socket) stopped with status 1!
    System > Administration > Printing and right click on your printer, selecting Properties. Settings > Device URI
    If you see something like socket://your_printer_ip_address:9100 just change socket to lpd and remove the :9100 off the end. Then click on apply.
    Apparently lpd is a more modern protocol which works with most printers whereas socket is more raw (and potentially faster but riskier in a network situation). Somewhere along the line, the default Ubuntu/Gnome setup for networked printers shifted from lpd to socket. Some primitive printers will have benefited whereas a larger number of more modern printers will have suffered.
    Please correct me if I am wrong (which is highly possible) but the underlying problem could be that socket may make the printer wait a long time for a large file to be processed ready for printing. Some printers, such as the Fuji Xerox DocuPrint C525A, may drop the socket if things take too long to start coming through.
    Changing timeout settings might work but lpd is better than socket so it is the preferred solution in any case.
    If this works for you, please leave a comment to let others know (ideally with a description of the printer and Ubuntu version). Printer may be relevant if it doesn’t support the direct stream protocol properly. NB I may take a while to let your comment through because of the volume of spam. Sorry about that.
    Finally, thanks to sphilli8 for the steer in the right direction at http://ubuntuforums.org/showthread.php?p=6245626.
          http://ubuntuforums.org/showthread.php?t=483415

  • Should I download and install the latest version of Adobe Flash to use with Lion?  My need for Flash is very basic: Google Maps, YouTube, and content on certain websites.  Thanks for any help you are able to provide.

    Should I download and install the latest version of Adobe Flash to use with Lion?  My need for Flash is very basic: Google Maps, YouTube, and content on certain websites.  Thanks for any help you are able to provide.

    Thanks for the speedy reply.  I have read so many comments about Flash being incompatible with Lion I was wondering whether to download it or not.  So many sites on the Web still require flash, however, you almost don't have a choice but to download it even if it is incompatible.  I gather a better version of Flash will be available for Lion soon.  Again, thanks for the help.  I will download the latest version of Flash.

  • Special double quotes and apostrophes in java help

    We are writing help for an application and using doctor help to generate it. The help is written in Word and converted to html. Word however, converts all the " characters to those "squiggly ones" which point towards the word they're quoting.
    When we viewed the generated help with java help those squiggly were not rendered. They are rendered as a square which means java help does not understand them.
    I'm sure someone else must have encountered this issue.
    Please can you tell me how to successfully render the squiggly double quotes in java help?

    You need the following encoding for those characters:
    &#8220;
    &#8221;
    using an xml encoder, e.g. xmlenc solves this issue, otherwise you must do it manually.
    But I have a related problem. When characters in the XML file are encoded
    they are only displayed correctly if some non encoded character follows.
    When there are two successive encoded characters then only the first one
    is displayed correctly. Putting a whitespace in between them displays both
    characters correctly, but with the whitespace in between.
    I guess there is an issue with the XML parser. Changing the encoding of the XML file does not help.
    example: TOC.xml file (displayed correctly in IE)
    <?xml version='1.0' encoding='ISO-8859-9' standalone='yes' ?>
    <!DOCTYPE toc PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN" "http://java.sun.com/products/javahelp/toc_1_0.dtd"><!--generated by JHelpDev Version: 0.4, 18 August 2005, see jhelpdev.sourceforge.net-->
    <toc version="1.0">
    <tocitem text="images "/>
    <tocitem text="&#286;&#286;RENC&#304; MOD&#220;L&#220; " target="index"/>
    </toc>
    Any ideas?

  • Error response: "java.io.BufferedReader@69d02b"

    Hi,
    I am trying the following code and encountered the error mentioned in the subject.This piece of code read a file online and prints its content into a web page. Can any one explain me what is causing it? I think it could be because my buffer is over loaded. if it is so then can some one show me how to crease the buffer size?
    or any help will be appreciated.
    Thank you.
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    package cgSkewPackage;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.net.MalformedURLException;
    import java.net.URL;
    * @author Owner
    public class CgSkew extends HttpServlet {
        public String getcgskew;
        public String url1;
        public String url2;
        public String getURL;
        public String inputLine;
        public BufferedReader in;
        * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
        * @param request servlet request
        * @param response servlet response
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            //Getting the user input.
            getcgskew = request.getParameter("cgskew");
            // Check for null value.
            if((getcgskew == null ) || (getcgskew.trim().equals(""))){
                response.sendRedirect("http://www.genomecalculator.org/cg-skew/cg-skew.html");
                else{
                    getcgskew = getcgskew.trim();
                    url1 = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=genome&id=NC_";
                    url2 = "&rettype=gb";
                    getURL= url1+getcgskew+url2;
                    // Opening buffer reader
                 try{  
                    URL geneBankLink = new URL(getURL);
                    in = new BufferedReader( new InputStreamReader
                            (geneBankLink.openStream()));
                 catch(MalformedURLException e) {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet CgSkew</title>"); 
                out.println("</head>");
                out.println("<body>");
                // Printing out here the file content.
                out.println(in);
                out.println("</body>");
                out.println("</html>");
            } finally {
                out.close();
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        * Handles the HTTP <code>GET</code> method.
        * @param request servlet request
        * @param response servlet response
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        * Handles the HTTP <code>POST</code> method.
        * @param request servlet request
        * @param response servlet response
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
    }

    I see. This is indeed not the way to download a file.
    You should not print it as a String to the outputStream, but you should be rather streaming the whole inputStream contents to the outputStream inside a loop. Learn the Java IO basics: [http://google.com/search?q=java+io+tutorial+site:sun.com].
    If you rather want to download it as an independent file instead of copying its content inside a HTML response, then rather write a servlet which does the task independently. Here is an example of such a servlet: [http://balusc.blogspot.com/2007/07/fileservlet.html].

  • Java Binary Search and sorting in Java

    My program is suppose to search news articles and alphabetize all the words article individually of the text file. Right now the program alphabetizes all the words of the articles including the numbers. The text file will be located below the code. So basically i need to know how to alphabetize every articles words individually.
    //This program reads an input line from the reader put the worda into an array with a count and increases
    //the count each time a word is repeated. It then sorts the words alphabetically in the array and
    //then prints out the array. There are 4 different articles like this one in the text file
    <ID>58</ID>
    <BODY>Assets of money market mutual funds
    increased 720.4 mln dlrs in the week ended yesterday to 236.90
    billion dlrs, the Investment Company Institute said.
        Assets of 91 institutional funds rose 356 mln dlrs to 66.19
    billion dlrs, 198 general purpose funds rose 212.5 mln dlrs to
    62.94 billion dlrs and 92 broker-dealer funds rose 151.9 mln
    dlrs to 107.77 billion dlrs.
    </BODY>
    import java.util.StringTokenizer;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.io.IOException;
    import java.io.FileNotFoundException;
    public class WordsFrequency
       public static void main(String[] args)
          // Initializations
          FileReader reader = null;
          FileWriter writer = null;
          // Open input and output files
          try
              reader = new FileReader("Reuters00.txt");
              writer = new FileWriter("WordsReport.txt");
          catch(FileNotFoundException e)
             System.err.println("Cannot find input file");
             System.exit(1);
          catch(IOException e)
           System.err.println("Cannot open input/output file");
           System.exit(2);
          // Set up to read a line and write a line
          BufferedReader in = new BufferedReader(reader);
          PrintWriter out = new PrintWriter(writer);
          out.println("Copied file is: Words followed by frequency");
          int count = 0;
           wordCount[] wordsArray = new wordCount[100000];
          boolean done = false;
          while(!done)
             String inputLine;
             try
                  inputLine= in.readLine();
             catch(IOException e)
                System.err.println("Problem reading input, program terminates. " );
                inputLine = null;
             if (inputLine == null)
               done = true;
         sortbyWords(wordsArray,count);
               for(int i = 0; i < count;i++)
                out.println(wordsArray.toString());
    else
                   StringTokenizer tokenizer = new StringTokenizer(inputLine);
              while(tokenizer.hasMoreTokens())
                   String token = tokenizer.nextToken();
                        int lengthofString = token.length();
                        char ch = token.charAt(lengthofString-1);
                        if(ch == '.' || ch == ',' || ch == '!' || ch == '?' || ch == ';')
                   token = token.substring(0,lengthofString-1);
    wordCount wordAndCount= new wordCount(token);
                        boolean skip = false;
                        for(int i = 0; i < count; i++)
                        if(token.equalsIgnoreCase(wordsArray[i].getWord()))
                             skip = true;
                             wordsArray[i].increaseFrequency();
                        if(skip == false)
                                  wordsArray[count] = wordAndCount;
                             count++;
    // Close files
    try
    in.close();
    catch(IOException e)
    System.err.println("Error closing file.");
    finally
    out.close();
         public static void sortbyWords(wordCount [] wArray, int size)
         wordCount temp;
         for (int j = 0; j < size-1; j++)
         for (int i = 0; i < size-1; i++)
         if (wArray[i].getWord().compareToIgnoreCase(wArray[i+1].getWord()) > 0)
              temp = wArray[i];
              wArray[i] = wArray[i + 1];
              wArray[i+1] = temp;
    Edited by: IronManNY on Sep 25, 2008 3:24 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    IronManNY wrote:
    My program is suppose to search news articles and alphabetize all the words article individually of the text file. Right now the program alphabetizes all the words of the articles including the numbers. The text file will be located below the code. So basically i need to know how to alphabetize every articles words individually.You want to strip out the numbers?

  • Problems reading unicode characters with BufferedReader or PrintWriter

    I am creating a pretty standard chat server and client with the exception that I want to be able to send special math symbols back and forth to aid in helping people with math homework. The unicode characters will appear on the buttons, in the textField (where users type in their messages), in the messageArea (where users see all of the messages) correctly. However, as soon as the server reads it, it is converted to a ? character by either the BufferedReader or the PrintWriter, but I am fairly certain it is the BufferedReader. All of the Sun examples I have read recommend doing exactly what I have done to be able to support unicode characters so I am somewhat at a loss. Any help would be appreciated. I will include all of the source code (which is rather large) but the main problem is the with the BufferedReader or PrintWriter when the servers reads the string in and then broadcasts it to all the clients (at least I'm pretty sure it is).
    // ChatServer.java
    import java.net.Socket;
    import java.net.ServerSocket;
    import java.io.InputStreamReader;
    import java.io.BufferedReader;
    import java.io.PrintWriter;
    import java.io.IOException;
    import java.util.Set;
    import java.util.HashSet;
    import java.util.HashMap;
    import java.util.Iterator;
    * A multithreaded chat room server. When a client connects the
    * server requests a screen name by sending the client the
    * text "SUBMITNAME", and keeps requesting a name until
    * a unique one is received. After a client submits a unique
    * name, the server acknowledges with "NAMEACCEPTED". Then
    * all messages from that client will be broadcast to all other
    * clients that have submitted a unique screen name. The
    * broadcast messages are prefixed with "MESSAGE ".
    * Because this is just a teaching example to illustrate a simple
    * chat server, there are a few features that have been left out.
    * Two are very useful and belong in production code:
    * 1. The protocol should be enhanced so that the client can
    * send clean disconnect messages to the server.
    * 2. The server should do some logging.
    public class ChatServer {
    * The port that the server listens on.
    private static final int PORT = 9001;
    * The set of all names of clients in the chat room. Maintained
    * so that we can check that new clients are not registering name
    * already in use.
    private static HashSet names = new HashSet();
    * The set of all the print writers for all the clients. This
    * set is kept so we can easily broadcast messages.
    private static HashMap writers = new HashMap();
    private static HashMap userSockets = new HashMap();
    private static Set keys;
    * The appplication main method, which just listens on a port and
    * spawns handler threads.
    public static void main(String[] args) throws Exception {
    System.out.println("The chat server is running.");
    ServerSocket listener = new ServerSocket(PORT);
    try {
    while (true) {
    new Handler(listener.accept()).start();
         } catch (Exception e) {
    } finally {
    listener.close();
    * A handler thread class. Handlers are spawned from the listening
    * loop and are responsible for a dealing with a single client
    * and broadcasting its messages.
    private static class Handler extends Thread {
    private String name;
    private Socket socket;
    private BufferedReader in;
    private PrintWriter out;
    * Constructs a handler thread, squirreling away the socket.
    * All the interesting work is done in the run method.
    public Handler(Socket socket) {
    this.socket = socket;
    public void disconnect(String userName) {
    if (userName != null) {
    names.remove(userName);
    if (writers.get(userName) != null) {
    writers.remove(userName);
    try {
    ((Socket)userSockets.get(userName)).close();
    } catch (IOException e) {
    e.printStackTrace();
    System.out.println(userName +" has disconnected from the Chat Server.");
    keys = writers.keySet();
    for (Iterator i = keys.iterator(); i.hasNext(); ) {
    ((PrintWriter)writers.get(i.next())).println(
    "USERQUIT" +name);
    public void disconnectAll() {
    for (Iterator i = names.iterator(); i.hasNext();) {
    String userName = i.next().toString();
    if (!userName.equals("administrator")) {
    names.remove(userName);
    keys = writers.keySet();
    for (Iterator it = keys.iterator(); it.hasNext(); ) {
    ((PrintWriter)writers.get(it.next())).println(
    "USERQUIT" +name);
    writers.remove(userName);
    userSockets.remove(userName);
    * Services this thread's client by repeatedly requesting a
    * screen name until a unique one has been submitted, then
    * acknowledges the name and registers the output stream for
    * the client in a global set, then repeatedly gets inputs and
    * broadcasts them.
    public void run() {
    try {
    // Create character streams for the socket.
    in = new BufferedReader(new InputStreamReader(
    socket.getInputStream()));
    out = new PrintWriter(socket.getOutputStream(), true);
    // Request a name from this client. Keep requesting until
    // a name is submitted that is not already used. Note that
    // checking for the existence of a name and adding the name
    // must be done while locking the set of names.
    while (true) {
    out.println("SUBMITNAME");
    name = in.readLine();
    if (name == null) {
    return;
    synchronized (names) {
    if (!names.contains(name) && name.equalsIgnoreCase("administrator")) {
    out.println("SUBMITPASSWORD");
    String password = in.readLine();
    if (password.equals("s3cure")) {
    out.println("GRANTEDADMIN");
    if (!names.contains(name)) {
    names.add(name);
    break;
    // Now that a successful name has been chosen, add the
    // socket's print writer to the set of all writers so
    // this client can receive broadcast messages.
    out.println("NAMEACCEPTED");
    keys = writers.keySet();
    for (Iterator i = keys.iterator(); i.hasNext(); ) {
    ((PrintWriter)writers.get(i.next())).println(
    "USERJOIN" +name);
    writers.put(name, out);
    userSockets.put(name, socket);
    System.out.println(name +" has successfully connected to the Chat Server.");
    // Accept messages from this client and broadcast them.
    // Ignore other clients that cannot be broadcasted to.
    while (true) {
    String input = in.readLine();
    if (input == null) {
    return;
              else if (input.startsWith("LISTUSERS")) {
                   Iterator i = names.iterator();
                   String namesString = new String();
                   while (i.hasNext()) {
                   namesString += " " +i.next();
                   out.println("USERLIST " +namesString);
         catch (Exception e) {
         finally {
              disconnect(name);
    // ChatClient.java
    import java.util.HashSet;
    import java.util.StringTokenizer;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.ListIterator;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import java.awt.Point;
    import java.awt.Button;
    import java.awt.Font;
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JTextArea;
    //import javax.swing.JTextPane;
    import javax.swing.JScrollPane;
    import javax.swing.JOptionPane;
    import javax.swing.JList;
    import javax.swing.DefaultListModel;
    import javax.swing.JMenuBar;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import java.net.Socket;
    import java.io.InputStreamReader;
    import java.io.BufferedReader;
    import java.io.PrintWriter;
    import java.io.IOException;
    * A simple Swing-based client for the chat server. Graphically
    * it is a frame with a text field for entering messages and a
    * textarea to see the whole dialog.
    * The client follows the Chat Protocol which is as follows.
    * When the server sends "SUBMITNAME" the client replies with the
    * desired screen name. The server will keep sending "SUBMITNAME"
    * requests as long as the client submits screen names that are
    * already in use. When the server sends a line beginning
    * with "NAMEACCEPTED" the client is now allowed to start
    * sending the server arbitrary strings to be broadcast to all
    * chatters connected to the server. When the server sends a
    * line beginning with "MESSAGE " then all characters following
    * this string should be displayed in its message area.
    public class ChatClient {
    BufferedReader in;
    PrintWriter out;
    JFrame frame = new JFrame("Math Chatter version 0.3");
    JTextField textField = new JTextField(40);
    JTextArea messageArea = new JTextArea(25, 40);
    //JTextPane messageArea = new JTextPane();
    // Menu
    JMenuBar menuBar = new JMenuBar();
    // File Menu and MenuItems
    JMenu fileMenu = new JMenu();
    JMenuItem connectMenuItem = new JMenuItem();
    JMenuItem disconnectMenuItem = new JMenuItem();
    JMenuItem exitMenuItem = new JMenuItem();
    // Help Menu and MenuItems
    JMenu helpMenu = new JMenu();
    JMenuItem aboutMenuItem = new JMenuItem();
    JOptionPane aboutDialog = new JOptionPane();
    // Message Area Popup Menu and MenuItems
    JPopupMenu messageAreaPopupMenu = new JPopupMenu();
    JMenuItem connectPopupMenuItem = new JMenuItem();
    JMenuItem disconnectPopupMenuItem = new JMenuItem();
    JMenuItem clearTextMenuItem = new JMenuItem();
    JMenuItem exitPopupMenuItem = new JMenuItem();
    MouseListener messageAreaPopupListener = new messageAreaPopupListener();
    // User Area Popup Menu and MenuItems
    JPopupMenu userAreaPopupMenu = new JPopupMenu();
    JMenuItem pingPopupMenuItem = new JMenuItem();
    JMenuItem disconnectUserPopupMenuItem = new JMenuItem();
    JMenuItem disconnectAllUsersPopupMenuItem = new JMenuItem();
    MouseListener userAreaPopupListener = new userAreaPopupListener();
    // Panel with textfield, send, and clear buttons
    JPanel sendTextPanel = new JPanel();
    // Panel that has all the math buttons
    JPanel buttonPanel = new JPanel();
    // Panel that has messageArea and users panell
    JPanel displayPanel = new JPanel();
    DefaultListModel listModel = new DefaultListModel();
    JList userNamesList = new JList(listModel);
    //JTextArea userNamesTextArea = new JTextArea(25, 10);
    // buttonPanel stuff
    Button sendButton = new Button();
    Button clearButton = new Button();
    Button infinityButton = new Button();
    Button thetaButton = new Button();
    Button limitButton = new Button();
    Button thereforeButton = new Button();
    JLabel buttonLabel = new JLabel("Useful math stuff: ");
    HashSet usersHashSet = new HashSet();
    LinkedList sentMessageList = new LinkedList();
    ListIterator sentMessageIterator;
    boolean isAdmin = false;
    * Constructs the client by laying out the GUI and registering a
    * listener with the textfield so that pressing Return in the
    * listener sends the textfield contents to the server. Note
    * however that the textfield is initially NOT editable, and
    * only becomes editable AFTER the client receives the NAMEACCEPTED
    * message from the server.
    public ChatClient() {
    // -----------------> Layout MenuBar
    frame.setJMenuBar(menuBar);
    fileMenu.setText("File");
    connectMenuItem.setText("Connect");
    connectMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    showWhoopsDialog();
    /*out.println("CONNECT");
    try {
    run();
    catch (Exception ex) {
    ex.printStackTrace();
    fileMenu.add(connectMenuItem);
    disconnectMenuItem.setText("Disconnect");
    disconnectMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    chatDisconnect();
    fileMenu.add(disconnectMenuItem);
    exitMenuItem.setText("Exit");
    exitMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    frame.dispose();
    System.exit(0);
    return;
    fileMenu.add(exitMenuItem);
    menuBar.add(fileMenu);
    helpMenu.setText("Help");
    aboutMenuItem.setText("About");
    aboutMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    aboutDialog.setDoubleBuffered(true);
    aboutDialog.showMessageDialog(frame,
    "Chat Server and Client were originally written by Ray Toal and were found at \n http://www.technocage.com/~ray/viewsource.jsp?java/networking/ChatServer.java and \n http://www.technocage.com/~ray/viewsource.jsp?java/networking/ChatClient.java. \n\n Math Chatter and all revisions have been done by William Ready.",
    "About Math Chatter Server and Client version 0.3",
    JOptionPane.INFORMATION_MESSAGE);
    helpMenu.add(aboutMenuItem);
    menuBar.add(helpMenu);
    // -----------> End Menu
    // -----------> Popup Menus
    // -----------> Message Area Popup Menu
    connectPopupMenuItem.setText("Connect");
    connectPopupMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    showWhoopsDialog();
    disconnectPopupMenuItem.setText("Disconnect");
    disconnectPopupMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    chatDisconnect();
    clearTextMenuItem.setText("Clear text");
    clearTextMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    messageArea.setText("");
    exitPopupMenuItem.setText("Exit");
    exitPopupMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    frame.dispose();
    System.exit(0);
    messageAreaPopupMenu.add(connectPopupMenuItem);
    messageAreaPopupMenu.add(disconnectPopupMenuItem);
    messageAreaPopupMenu.add(clearTextMenuItem);
    messageAreaPopupMenu.add(exitPopupMenuItem);
    messageArea.addMouseListener(messageAreaPopupListener);
    // -----------> End Message Area Popup Menu
    // -----------> User Area Popup Menu
    pingPopupMenuItem.setText("Ping User");
    pingPopupMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    //System.out.println("Yo yo yo");
    disconnectUserPopupMenuItem.setText("Disconnect User");
    disconnectUserPopupMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (userNamesList.getSelectedValue() != null) {
    //System.out.println("Yo yo yo");
    out.println("DISCONNECTUSER " +userNamesList.getSelectedValue().toString());
    //disconnectUserPopupMenuItem.setEnabled(false);
    disconnectUserPopupMenuItem.setVisible(false);
    disconnectAllUsersPopupMenuItem.setText("Disconnect All Users");
    disconnectUserPopupMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (userNamesList.getSelectedValue() != null) {
    //System.out.println("Yo yo yo");
    out.println("DISCONNECTALLUSERS");
    //disconnectUserPopupMenuItem.setEnabled(false);
    disconnectAllUsersPopupMenuItem.setVisible(false);
    userAreaPopupMenu.add(pingPopupMenuItem);
    userAreaPopupMenu.add(disconnectUserPopupMenuItem);
    userAreaPopupMenu.add(disconnectAllUsersPopupMenuItem);
    userNamesList.addMouseListener(userAreaPopupListener);
    // -----------> End User Area Popup Menu
    // -----------> End Popup Menus
    // -----------> Layout GUI
    textField.setEditable(false);
    textField.requestDefaultFocus();
    messageArea.setEditable(false);
    sendTextPanel.setLayout(new FlowLayout());
    sendTextPanel.add(textField);
    sendButton.setLabel("Send");
    sendButton.setEnabled(false);
    sendTextPanel.add(sendButton);
    clearButton.setLabel("Clear");
    sendTextPanel.add(clearButton);
    buttonPanel.setLayout(new FlowLayout());
    buttonPanel.add(buttonLabel);
    infinityButton.setLabel("\u221e");
    buttonPanel.add(infinityButton);
         thetaButton.setLabel("\u03b8");
    buttonPanel.add(thetaButton);
    limitButton.setLabel("lim");
    buttonPanel.add(limitButton);
    thereforeButton.setLabel("\u2234");
    buttonPanel.add(thereforeButton);
    userNamesList.setVisibleRowCount(26);
    userNamesList.setFixedCellWidth(110);
    JScrollPane nameTextScrollPane = new JScrollPane(userNamesList);
    JScrollPane messageAreaScrollPane = new JScrollPane(messageArea);
    displayPanel.setLayout(new FlowLayout());
    displayPanel.add(messageAreaScrollPane);
    displayPanel.add(nameTextScrollPane);
    frame.getContentPane().add(sendTextPanel, "North");
    frame.getContentPane().add(displayPanel, "Center");
    frame.getContentPane().add(buttonPanel, "South");
    frame.pack();
    // ---------------> Add Listeners
    textField.addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent e){ }
    public void keyTyped(KeyEvent e){
    if (e.getKeyChar() == KeyEvent.VK_UP) {
    if (sentMessageIterator.hasNext()) {
    textField.setText((String)sentMessageIterator.next());
    if (e.getKeyChar() == KeyEvent.VK_DOWN) {
    if (sentMessageIterator.hasPrevious()) {
    textField.setText((String)sentMessageIterator.previous());
    if (e.getKeyChar() == KeyEvent.VK_ENTER) {
    String text = textField.getText();
    if (text != null && !(text.equals(""))) {
    sentMessageList.addFirst(textField.getText());
    sentMessageIterator = sentMessageList.listIterator();
    out.println(textField.getText());
    textField.setText("");
    public void keyReleased(KeyEvent e){}
    sendButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    out.println(textField.getText());
    textField.setText("");
    textField.requestFocus();
    clearButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    textField.setText("");
    textField.requestFocus();
    infinityButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText() +"\u221e");
    textField.requestFocus();
    thetaButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText() +"\u03b8");
    textField.requestFocus();
    limitButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String limit = JOptionPane.showInputDialog(frame,
    "Enter the value that the variable approaches. \n If the value is infinity, type in inf. \n (Note: the variable name is irrelevant)",
    "Value that variable approaches",
    JOptionPane.QUESTION_MESSAGE);
    if (limit != null && limit.equalsIgnoreCase("inf"))
    textField.setText(textField.getText() +"lim [x->\u221e] ");
    else if (limit != null)
    textField.setText(textField.getText() +"lim [x->" +limit +"] ");
    textField.requestFocus();
    thereforeButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText() +"\u2234");
    textField.requestFocus();
    // -------------> End Listeners
    // -------------> End GUI
    * Prompt for and return the address of the server.
    private String getServerAddress() {
    return JOptionPane.showInputDialog(
    frame,
    "Enter IP Address of the Server:",
    "Welcome to the Chatter",
    JOptionPane.QUESTION_MESSAGE);
    private void showWhoopsDialog() {
    JOptionPane.showMessageDialog(frame,
    "Unfortunately this feature has not been implemented yet. \n The only way to connect currently is to exit the program \n and start it again",
    "Whoops!",
    JOptionPane.ERROR_MESSAGE);
    private void chatDisconnect() {
    messageArea.append("You have disconnected from the Chat Server\n");
    textField.setEditable(false);
    messageArea.setEnabled(false);
    userNamesList.setEnabled(false);
    fileMenu.requestFocus();
    out.println("DISCONNECT");
    * Prompt for and return the desired screen name.
    private String getName() {
    return JOptionPane.showInputDialog(
    frame,
    "Choose a screen name:",
    "Screen name selection",
    JOptionPane.PLAIN_MESSAGE);
    private String getPassword() {
    return JOptionPane.showInputDialog(
    frame,
    "Type in your password:",
    "Password Input",
    JOptionPane.PLAIN_MESSAGE);
    * Connects to the server then enters the processing loop.
    private void run() throws IOException {
    // Make connection and initialize streams
    String serverAddress = getServerAddress();
    if (serverAddress != null && !(serverAddress.equals(""))) {
    Socket socket = new Socket(serverAddress, 9001);
    in = new BufferedReader(new InputStreamReader(
    socket.getInputStream()));
    out = new PrintWriter(socket.getOutputStream(), true);
    // Process all messages from server, according to the protocol.
    while (true) {
    try {
    String line = in.readLine();
    if (line.startsWith("SUBMITNAME")) {
    out.println(getName());
              } else if (line.startsWith("NAMEACCEPTED")) {
    textField.setEditable(true);
              out.println("LISTUSERS");
    sendButton.setEnabled(true);
    //messageArea.setEnabled(true);
    } else if (line.startsWith("SUBMITPASSWORD")) {
    out.println(getPassword());
    } else if (line.startsWith("GRANTEDADMIN")) {
    isAdmin = true;
    //disconnectUserPopupMenuItem.setEnabled(true);
    disconnectUserPopupMenuItem.setVisible(true);
    disconnectAllUsersPopupMenuItem.setVisible(true);
    } else if (line.startsWith("DISCONNECT")) {
    sendButton.setEnabled(false);
    return;
    } else if (line.startsWith("USERLIST")) {
              StringTokenizer st = new StringTokenizer(line.substring(8), " ");
              while (st.hasMoreTokens()) {
              usersHashSet.add(st.nextToken());
    listModel.removeAllElements();
    for (Iterator i = usersHashSet.iterator(); i.hasNext(); ) {
              listModel.addElement(i.next());
    } else if (line.startsWith("USERJOIN")) {
              String userJoinName = line.substring(8).trim();
              usersHashSet.add(userJoinName);
              listModel.addElement(userJoinName);
    } else if (line.startsWith("USERQUIT")) {
              String userQuitName = line.substring(8).trim();
              usersHashSet.remove(userQuitName);
    listModel.removeElement(userQuitName);
    } else if (line.startsWith("MESSAGE")) {
    messageArea.setFont(new Font("Lucida Sans", Font.PLAIN, 12));
    messageArea.append(line.substring(8) + "\n");
    catch (Exception e) {
    //e.printStackTrace();
    return;
    * Runs the client as an application with a closeable frame.
    public static void main(String[] args) throws Exception {
    ChatClient client = new ChatClient();
    client.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    client.frame.setLocation(200, 100);
    client.frame.show();
    client.run();
    class messageAreaPopupListener extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
    maybeShowPopup(e);
    public void mouseReleased(MouseEvent e) {
    maybeShowPopup(e);
    private void maybeShowPopup(MouseEvent e) {
    if (e.isPopupTrigger()) {
    messageAreaPopupMenu.show(e.getComponent(),
    e.getX(), e.getY());
    class userAreaPopupListener extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
    maybeShowPopup(e);
    public void mouseReleased(MouseEvent e) {
    maybeShowPopup(e);
    private void maybeShowPopup(MouseEvent e) {
    if (e.isPopupTrigger()) {
    userAreaPopupMenu.show(e.getComponent(),
    e.getX(), e.getY());

    Yes, the code is large, isn't it. It is a good idea, when you have a problem you can't solve, to remove unnecessary code. When the problem disappears, then you know the code you just removed was probably the source of the problem.
    But in your case, I think that none of the 1000 lines of code you posted are the problem. You appear to be using Lucida Sans, which is a positive sign; it can render many of the characters you have hard-coded in your program. But apparently the problem is with characters that are coming from somewhere else? And you are using a PrintWriter to send them there and a BufferedReader to get them back? These convert your data from characters to bytes and back again using the default encoding for your system. Chances are that this encoding is some "extended ASCII" encoding that doesn't know how to map anything above \u00ff. You need to get an InputStreamReader and an OutputStreamWriter into your transmission. (Wrap your socket.getInputStream() in an InputStreamReader and wrap that in a BufferedReader, etc.) These objects can take an encoding name as their second parameter; try "UTF-8" or "UTF8" for the encoding. Their API documentation has a link to a page about encodings; follow that if you need more info.

Maybe you are looking for

  • Can't click on photo when slider set to single picture

    Prior to Iphoto 08, when you set the slider to show a single picture (all the way to the right), you could double click on it to edit, drag it to a folder, etc. With iphoto 08, you cannot do this. It is rather annoying to use the large view to determ

  • Looking for infos about error code in Sun Java Directory Server 6.3.1.1.1

    Hi, I'm using Sun-Java(tm)-System-Directory/6.3.1.1.1 on Solaris 9 with two server configured in multi-master replication For a few time I receive those warning in the error logfile : [14/May/2012:06:18:40 +0200] - WARNING<5384> - Entry - conn=-1 op=

  • IGS Graph not displayed for GRC

    Hello, After installing of SAP Netweaver 7.0 EHP1 AS JAVA, I have configured IGS as per install guide 7.3 section, but when I execute the URL http://<server_name>::40080, I do not get the graph displayed. I only get a screen with 1 line message stati

  • Web form tester. don't run the form.

    Dear all, i am using oracle 8i and forms 6i. i am trying to run the web form tester but it give error. i gave the forllowing parameters: form : D:\Accano\logonscreen.fmx Userid : mis other parameters : useSDI= yes ( what is this?) Look and Feel: Gene

  • What is SB protocol in OSB ??

    hi, what is a SB protocol anf for wich service we use. please someone help me and if some one have an example please give me. thank you aymen