Help with a Boolean/Satisfiability assignment

Hey everyone, first time posting here.
I have an assignment which im working on atm but im stuck and was wondering if anyone can give me a general direction to start on. The basic parts of the program are as follows:
1. Obtains the problem instance name from the command line
2. Reads the instance from a file
3. Displays the instance on the screen exactly as it appears in the file
4. Constructs an internal data structure representing the formula, using specified types
5. Displays the instance on the screen in "human readable" form
6. Determines if the instance has a solution (i.e. a satisfying assignment)
7. If there is a solution, displays the solution on the screen; (in "human readable" form); if there
is no solution, displays an appropriate message
8. Displays also how long it took to determine if there was a solution or not
9. Saves a report (roughly, the previous two items) to a file
I am currently stuck on part 6 of the assignment.
When you read in an instance for processing, you must represent it with and instance of
Formula. This object will have an instance variable that stores a collection of Proposition
instances, representing the variables, and an instance variable that stores a collection of Clause
instances, representing the clauses, as read from the file.
Each of these classes must have a method public String toString() that returns a string
representing its contents. These should be implemented so that, if F is a Formula instance,
executing System.out.print( F ) will print the "human readable" form of the formula as
described above.
What would be a good way of determing how the instance has a solution? I've considered using a truth table or even using binary but cant think of a way to do this properly.
Thanks all!

Input: myInstance
Number of Variables: 3
Variables:
we are in vancouver
it is summer
it is raining
Number of Clauses: 2
Clauses:
( NOT we are in vancouver OR it is summer OR it is raining )
( NOT we are in vancouver OR NOT it is summer OR NOT it is raining )
( !v | s | r ) & ( !v | !s | !r ) is the condition so I do have to use and
The satisfying assignments are:
v=true, s=true, r=false
v=true, s=false, r=true
v=false, s=true, r=true
v=false, s=true, r=false
v=false, s=false, r=true
v=false, s=false, r=false
This assignment is bloody confusing -_-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

Similar Messages

  • Im DROWNING! need help with a simple java assignment! plz someone help me!

    i need help with my java assignment, with validating a sin number. easy for must who know java. im drowning... please help!

    You will need to store each digit of the social insurance number in a field of its own. To validate the entry you will:
    1. Multiply the 2nd, 4th, 6th and 8th digit by 2.
    2. If the product of any of the four multiplications result in a value greater than 9, add the two resulting digits together to yield a single-digit response. For example 6 * 2 = 12, so you would add the 1 and the 2 to get a result of 3.
    3. Add these four calculated values together, along with the 1st, 3rd, 5th, and 7th digits of the original number.
    4. Subtract this sum from the next highest multiple of 10.
    5. The difference should be equal to the 9th digit, which is considered the check digit.
    Example of validating S.I.N. 765932546
    1st digit 7
    2nd digit (6*2 =12 1+2=) 3
    3rd digit 5
    4th digit (9*2 = 18 1+8 =) 9
    5th digit 3
    6th digit (2*2 = 4) 4
    7th digit 5
    8th digit (4*2 = 8) 8
    Total 44 next multiple of 10 is 50
    50-44 = 6 which is the 9th digit
    Therefore the S.I.N. 765932546 is Valid
    ********* SIN Validation *********
    Welcome - Please enter the first number: 120406780
    Second digit value multiplied by 2 4
    Fourth digit value multiplied by 2 8
    Sixth digit value multiplied by 2 12
    Eighth digit value multiplied by 2 16
    Value derived from 6th digit 3
    Value derived from 8th digit 7
    The total is 30
    Calculated digit is 10
    Check digit must be zero because calculated value is 10
    The SIN 120406780 is Valid
    this is my assignemtn this is what i have! i dont know where to start! please help me!
    /*     File:     sinnumber.java
         Author:     Ashley
         Date:     October 2006
         Purpose: Lab1
    import java.util.Scanner;
    public class Lab1
              public static void main(String[] args)
                   Scanner input = new Scanner(System.in);
                   int sin = 0;
                   int number0, number1, number2, number3, number4, number5, number6, number7, number8;
                   int count = 0;
                   int second, fourth, sixth, eighth;
                   System.out.print("\t\n**********************************");
                   System.out.print("\t\n**********SIN Validation**********");
                   System.out.print("\t\n**********************************");
                   System.out.println("\t\nPlease enter the First sin number: ");
                   sin = input.nextInt();
                   count = int.length(sin);     
                   if (count > 8 || count < 8)
                   System.out.print("Valid: ");
         }

  • Help with importing photos - IPhoto assigning file names that already exist

    When I import photos from my canon powershot camera, IPhoto has begun assigning file names that are the same as filenames that already exist on photos imported previously. It appears it is deleting those older files (when I go look in my photo library, the older one with the same name is now gone).
    I don't know how to name photos as they are imported as it seems to be done automatically and I'm afraid to import more photos and loose my old pics. Can't find anything on the internet when I search on this question - can anyone help?

    Thanks so much for your quick reply, TD.
    What happens when I plug in my camera is that Iphoto opens, asks me if I want to import photos (and if I want to delete originals), and I click okay or whatever and they are imported. I name the roll/folder, and I photo puts them in the library in that folder in that year.
    It makes sense that the camera is numbering them. I think that the ones it is using the same numbers for (ie - IMG0080.jpg) are the numbers on older photos that were assigned by a different camera that we used to have.
    So I guess the canon isn't searching on all photo names that have been used, just the ones that it has used in the past.
    Unfortunately, when the new photo is named with the same name as an old one, that old one is literally deleted - at least as far as I can tell - and when I go look for it in my photo library, it is no longer there.
    I might try to see if there are any help forums for the canon powershot and see what I might learn there.
    THanks so much for your help!

  • Help with a Data Structures Assignment

    For this assignment we need to create a 'Bag' class that implements BagInterface. This becomes a bag of Coins. The problem I am having is in the Bag. The length variable ('maxLength') is not being registered. I assign it in the constructor statement, but when it is called later in the script, it shows up as 0. Any suggestions would be greatly appreciated.
    public class Bag<E> implements BagInterface<E>{
    E[] entry; // array of E�s
    int[] frequency; // frequency of the E�s
    int maxLength;
    int length = 0;                // current number of entries in bag
    int MAX_SIZE = 10; // constant default size of a Bag
    public void Bag()
         E[] entry = (E[])(new Object[MAX_SIZE]);
         int[] frequency = new int[MAX_SIZE];
         maxLength = MAX_SIZE;
    public void Bag(int maxSize)
         E[] entry = (E[])(new Object[maxSize]);
         int[] frequency = new int[maxSize];
         maxLength = maxSize;
    /** Returns true if anEntry is in this Bag; otherwise, return false.*/
    public boolean contains(E anEntry)
         E TempVar = null;
              for(int count = 0; count < length; count++)
                   if(anEntry == entry[count])
              TempVar = entry[count];
              if(TempVar == anEntry)
                   return true;
              else
                   return false;
    /** Returns the index of where anEntry is stored; otherwise, returns -1.*/
    public int getPosition(E anEntry)
                   int TempVar = -1;
                   for(int count = 0; count < length; count++)
                        if(anEntry == entry[count])
                   TempVar = count;
                   if(TempVar >= 0)
                        return TempVar;
                   else
                        return -1;
    /** Returns the frequency of the item stored at position; otherwise, returns 0.*/
    public int getFrequency(int position)
         int TempVar;
         try{
         TempVar = frequency[position];
         return TempVar;
         catch(ArrayIndexOutOfBoundsException e)
              return 0;
    /** Returns the item stored at position; otherwise, returns null.*/
    public E getItem(int position)
         E TempVar;
         try{
                   TempVar = entry[position];
                   return TempVar;
         catch(ArrayIndexOutOfBoundsException e)
              return null;
    /** If anEntry is already in this Bag, increment it's frequency; otherwise,
    * add the newEntry to the Bag and set its frequency to 1.*/
    public void add(E newEntry)
         boolean test;
         int position;
         int TempVar;
         test = isFull();
         if(test = true)
              E[] entryTemp = (E[])(new Object[maxLength]);
              int[] frequencyTemp = new int[maxLength];
              for(int count = 0; count < maxLength; count++)
                   entryTemp[count] = entry[count];
                   frequencyTemp[count] = frequency[count];
              if(maxLength == 0)
                   maxLength = 5;
              else
                   maxLength = maxLength * 2;
              System.out.println(maxLength);
              E[] entry = (E[])(new Object[maxLength]);
              int[] frequency = new int[maxLength];
              for(int count2 = 1; count2 < maxLength; count2++)
                   entry[count2] = entryTemp[count2];
                   frequency[count2] = frequencyTemp[count2];
              position = getPosition(newEntry);
              if(position == -1)
              entry[length] = newEntry;
                   frequency[length] = 1;
                   length++;
                   else
                   TempVar = frequency[position];
                   TempVar++;
                   frequency[position] = TempVar;
         if(test = false)
              position = getPosition(newEntry);
              if(position == -1)
                   entry[length] = newEntry;
                   frequency[length] = 1;
                   length++;
              else
                   TempVar = frequency[position];
                   TempVar++;
                   frequency[position] = TempVar;
    /** If anEntry in this Bag, retrun its index back to the caller; otherwise, retrun -1. */
    public void remove(E anEntry)
         boolean tester = contains(anEntry);
         if(tester = true)
                   int Pos = getPosition(anEntry);
         int Freq = getFrequency(Pos);
         if(Freq > 1)
              frequency[Pos] = Freq - 1;
         if(Freq == 1)
              for(int count = Pos; count < length-1; count++)
                   frequency[Pos] = frequency[Pos+1];
                   entry[Pos] = entry[Pos+1];
              length--;
    /** Clear the contents of this Bag. */
    public void clear()
         E[] entry = (E[])(new Object[maxLength]);
         int[] frequency = new int[maxLength];
    /** Return the length of this Bag. */
    public int getLength()
         return length;
    /** Return true if this Bag is empty; otherwise, return false. */
    public boolean isEmpty()
         if(length == 0)
              return true;
         else
              return false;
    /** Return true if this Bag is full; otherwise, return false. */
    public boolean isFull()
         if(length == maxLength)
              return true;
         else
              return false;
    /** Return a Bag that is the union of this Bag and other (set the frequency to
    * the sum the their freqiencies) */
    public Bag<E> union(Bag<E> other){
         int lengthThis;
         int lengthOther;
         lengthThis = this.getLength();
         lengthOther = other.getLength();
         Bag<E> Union = new Bag<E>();
         for(int count = 0; count < lengthOther; count++)
              int Freq = other.getFrequency(count);
              if(Freq == 1)
              Union.add(other.getItem(count));
              if(Freq > 1)
                   int FreqCounter = Freq;
                   for(int count2 = 0; count2 < FreqCounter; count2++)
                        Union.add(other.getItem(count));
         return Union;
    /** Return a Bag that is the intersection of this Bag and other (set the frequency
    * to the minimum of their frequencies). */
    public Bag<E> intersection(Bag<E> other){
         int lengthThis;
         int lengthOther;
         lengthThis = this.getLength();
         lengthOther = other.getLength();
         Bag<E> Intersect = new Bag<E>();
         for(int count = 0; count < lengthOther; count++)
         E Tester1 = other.getItem(count);
         boolean container = this.contains(Tester1);
         if(container = true)
              int OtherFreq = other.getFrequency(count);
              int position = this.getPosition(Tester1);
              E Tester2 = getItem(position);
              int ThisFreq = getFrequency(position);
              if(ThisFreq <= OtherFreq)
                   for(int count2 = 0; count < ThisFreq; count++)
                        Intersect.add(Tester1);
              else
                   for(int count3 = 0; count < OtherFreq; count++)
                        Intersect.add(Tester1);
         return Intersect;
    /** Return a Bag that is the difference of this Bag and other (set the frequency
    * to the difference of their frequencies provided this number is positive). */
    public Bag<E> difference(Bag<E> other)
         int lengthThis;
         int lengthOther;
         lengthThis = this.getLength();
         lengthOther = other.getLength();
         Bag<E> Difference = new Bag<E>();
         for(int count = 0; count < lengthOther; count++)
         E Tester1 = other.getItem(count);
         boolean container = this.contains(Tester1);
         if(container = true)
              int OtherFreq = other.getFrequency(count);
              int position = this.getPosition(Tester1);
              E Tester2 = getItem(position);
              int ThisFreq = getFrequency(position);
              if(ThisFreq <= OtherFreq)
                   int ThatFreq = OtherFreq - ThisFreq;
                   for(int count2 = 0; count < ThatFreq; count++)
                        Difference.add(Tester1);
              else
                   int ThatFreq = ThisFreq - OtherFreq;
                   for(int count3 = 0; count < ThatFreq; count++)
                        Difference.add(Tester1);
         return Difference;
    public void display()
         int lengthThis = this.getLength();
         for(int count = 0; count < lengthThis; count++)
              E MyItem = this.getItem(count);
              int MyFreq = this.getFrequency(count);
              System.out.println("<" + MyItem + "," + MyFreq + ">");
    }

    Sorry about not using the code snippit thing.
    I fixed the issue about the arrays and the length variable. I am now having an issue with the display() method. It doesn't receive the Bag object, instead is should print out the output from either the Union, Intersection of Difference bags and I'm not sure how to make it do that. An example call is:
    stash1 and 2 are bag objects.
    (stash1.union(stash2)).display();

  • Need Help with a JAVA programming assignment

    How do I write a JAVA program that could be used as the start of an MS-DOS/Windows simulation of the IEEE 802.3 protocol? I am to only code the parts necessary to build the 802.3 frame. For the initial implementation, the Checksum function need not be a CRC function, and the Destination and Source addresses wil be in input, stored, and output, and in dotted-decimal format.
    I need:
    1. A record to describe the frame, with each field being a (byte-) string of the required size, except that the Data field is of variable size. Although the "Source address" and "Destination address" would be 6 bytes for a real implementation, for this first implementation you can either assume they'll be text strings in the usual "dotted decimal" form (e.g. "14.04.05.18.01.25" as a typical example--from Tanenbaum, p. 429), or 6 hex digits.
    2. Suitable constant declarations for values such as the standard "Preamble" and "Start of Frame" values.
    3. Suitable functions to Get the three variable values "Destination address", "Source address", and "Data" from the standard input device.
    4. A suitable function to display each of the fields of a given frame in a format such as:
    Preamble: ...
    StartofFrame: ...
    Destination: ...
    etc.
    5. A suitable function to generate a "Pad" field if necessary.
    6. A "dummy" Checksum-generating function which just takes the first 32 bits (4 bytes) of the Data (or Data+Pad, if necessary) rather than an actual CRC algorithm.
    I have no experience with Java. Can you help me or start me in the right direction?
    Thanks...........TK

    If you have no experience with Java, then it seems to me your first step should be to start learning the language. But it's difficult to advise how, since we don't know anything about your background. There are many good books available on Java, some are for beginners and some are for advanced programmers, so I'd suggest you go somewhere that has a large selection and start looking for something that doesn't seem completely over your head.

  • Help with Query and report assignment

    Hi,
    I am able to attach 2 transactions (e.g. MM03 and ME23) to my SAP Query through report assignment.  My question is how do I skip the selection screen that asks me if I want to Display Material or Display PO?
    What i want to happen is in my report, if I click on the material - MM03 is called and if I click on the PO, ME23 is called.
    Is this even possible through queries?
    Cheers.

    Thanks for replying.
    I did as suggested and added the following at the start of my code.
    AT LINE-SELECTION.
    GET CURSOR FIELD FILD_NAME VALUE F_VALUE.
    I set a breakpoint in AT LINE-SELECTION and when I executed my query, it wasn't passing through it. 
    When I removed the line AT LINE-SELECTION, it passes through GET CURSOR FIELD, but FILD_NAME is not populated.  It's blank.
    Below is my code at the moment:
    data: fild_name(30), F_VALUE(50).
    *AT LINE-SELECTION.
    GET CURSOR FIELD FILD_NAME VALUE F_VALUE.
    if fild_name = 'MAT'.
    PARAMETERS P_MATNR LIKE MARA-MATNR.  "DD ref. as in MM03
    SET PARAMETER ID 'MAT' FIELD P_MATNR. "ID for MARA-MATNR
    CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
    endif.
    Appreciate any help.

  • Need help with calculator project for an assignment...

    Hi all, I please need help with my calculator project that I have to do for an assignment.
    Here is the project's specifications that I need to do"
    """Create a console calculator applicaion that:
    * Takes one command line argument: your name and surname. When the
    program starts, display the date and time with a welcome message for the
    user.
    * Display all the available options to the user. Your calculator must include
    the arithmetic operations as well as at least five scientific operations of the
    Math class.
    -Your program must also have the ability to round a number and
    truncate it.
    -When you multiply by 2, you should not use the '*' operator to perform the
    operation.
    -Your program must also be able to reverse the sign of a number.
    * Include sufficient error checking in your program to ensure that the user
    only enters valid input. Make use of the String; Character, and other
    wrapper classes to help you.
    * Your program must be able to do conversions between decimal, octal and
    hex numbers.
    * Make use of a menu. You should give the user the option to end the
    program when entering a certain option.
    * When the program exits, display a message for the user, stating the
    current time, and calculate and display how long the user used your
    program.
    * Make use of helper classes where possible.
    * Use the SDK to run your program."""
    When the program starts, it asks the user for his/her name and surname. I got the program to ask the user again and again for his/her name and surname
    when he/she doesn't insert anything or just press 'enter', but if the user enters a number for the name and surname part, the program continues.
    Now my question is this: How can I restrict the user to only enter 'letters' (and spaces of course) but allow NO numbers for his/her surname??
    Here is the programs code that I've written so far:
    {code}
    import java.io.*;
    import java.util.*;
    import java.text.*;
    public class Project {
         private static String nameSurname = "";     
         private static String num1 = null;
         private static String num2 = null;
         private static String choice1 = null;
         private static double answer = 0;
         private static String more;
         public double Add() {
              answer = (Double.parseDouble(num1) + Double.parseDouble(num2));
              return answer;
         public double Subtract() {
              answer = (Double.parseDouble(num1) - Double.parseDouble(num2));
              return answer;
         public double Multiply() {
              answer = (Double.parseDouble(num1) * Double.parseDouble(num2));
              return answer;
         public double Divide() {
              answer = (Double.parseDouble(num1) / Double.parseDouble(num2));
              return answer;
         public double Modulus() {
              answer = (Double.parseDouble(num1) % Double.parseDouble(num2));
              return answer;
         public double maximumValue() {
              answer = (Math.max(Double.parseDouble(num1), Double.parseDouble(num2)));
              return answer;
         public double minimumValue() {
              answer = (Math.min(Double.parseDouble(num1), Double.parseDouble(num2)));
              return answer;
         public double absoluteNumber1() {
              answer = (Math.abs(Double.parseDouble(num1)));
              return answer;
         public double absoluteNumber2() {
              answer = (Math.abs(Double.parseDouble(num2)));
              return answer;
         public double Squareroot1() {
              answer = (Math.sqrt(Double.parseDouble(num1)));
              return answer;
         public double Squareroot2() {
              answer = (Math.sqrt(Double.parseDouble(num2)));
              return answer;
         public static String octalEquivalent1() {
              int iNum1 = Integer.parseInt(num1);
    String octal1 = Integer.toOctalString(iNum1);
    return octal1;
         public static String octalEquivalent2() {
              int iNum2 = Integer.parseInt(num2);
              String octal2 = Integer.toOctalString(iNum2);
              return octal2;
         public static String hexadecimalEquivalent1() {
              int iNum1 = Integer.parseInt(num1);
              String hex1 = Integer.toHexString(iNum1);
              return hex1;
         public static String hexadecimalEquivalent2() {
              int iNum2 = Integer.parseInt(num2);
              String hex2 = Integer.toHexString(iNum2);
              return hex2;
         public double Round1() {
              answer = Math.round(Double.parseDouble(num1));
              return answer;
         public double Round2() {
              answer = Math.round(Double.parseDouble(num2));
              return answer;
              SimpleDateFormat format1 = new SimpleDateFormat("EEEE, dd MMMM yyyy");
         Date now = new Date();
         SimpleDateFormat format2 = new SimpleDateFormat("hh:mm a");
         static Date timeIn = new Date();
         public static long programRuntime() {
              Date timeInD = timeIn;
              long timeOutD = System.currentTimeMillis();
              long msec = timeOutD - timeInD.getTime();
              float timeHours = msec / 1000;
                   return (long) timeHours;
         DecimalFormat decimals = new DecimalFormat("#0.00");
         public String insertNameAndSurname() throws IOException{
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        while (nameSurname == null || nameSurname.length() == 0) {
                             for (int i = 0; i < nameSurname.length(); i++) {
                             if ((nameSurname.charAt(i) > 'a') && (nameSurname.charAt(i) < 'Z')){
                                       inputCorrect = true;
                        else{
                        inputCorrect = false;
                        break;
                        try {
                             BufferedReader inStream = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("Please enter your name and surname: ");
                             nameSurname = inStream.readLine();
                             inputCorrect = true;
                        }catch (IOException ex) {
                             System.out.println("You did not enter your name and surname, " + nameSurname + " is not a name, please enter your name and surname :");
                             inputCorrect = false;
                        System.out.println("\nA warm welcome " + nameSurname + " ,todays date is: " + format1.format(now));
                        System.out.println("and the time is now exactly " + format2.format(timeIn) + ".");
                        return nameSurname;
              public String inputNumber1() throws IOException {
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        try {
                             BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("\nPlease enter a number you want to do a calculation with and hit <ENTER>: ");
                             num1 = br.readLine();
                             double number1 = Double.parseDouble(num1);
                             System.out.println("\nThe number you have entered is: " + number1);
                             inputCorrect = true;
                        } catch (NumberFormatException nfe) {
                             System.out.println("\nYou did not enter a valid number: " + "\""+ num1 + "\" is not a number!!");
                             inputCorrect = false;
                        return num1;
         public String calculatorChoice() throws IOException {
              System.out.println("Please select an option of what you would like to do with this number from the menu below and hit <ENTER>: ");
              System.out.println("\n*********************************************");
              System.out.println("---------------------------------------------");
              System.out.println("Please select an option from the list below: ");
              System.out.println("---------------------------------------------");
              System.out.println("1 - Add");
              System.out.println("2 - Subtract");
              System.out.println("3 - Multiply");
              System.out.println("4 - Divide (remainder included)");
              System.out.println("5 - Maximum and minimum value of two numbers");
              System.out.println("6 - Squareroot");
              System.out.println("7 - Absolute value of numbers");
              System.out.println("8 - Octal and Hexadecimal equivalent of numbers");
              System.out.println("9 - Round numbers");
              System.out.println("0 - Exit program");
              System.out.println("**********************************************");
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        try {
                             BufferedReader inStream = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("Please enter your option and hit <ENTER>: ");
                             choice1 = inStream.readLine();
                             int c1 = Integer.parseInt(choice1);
                             System.out.println("\nYou have entered choice number: " + c1);
                             inputCorrect = true;
                        } catch (NumberFormatException nfe) {
                             System.out.println("You did not enter a valid choice number: " + "\""+ choice1 + "\" is not in the list!!");
                             inputCorrect = false;
                        return choice1;
         public String inputNumber2() throws IOException {
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        try {
                             BufferedReader br2 = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("\nPlease enter another number you want to do the calculation with and hit <ENTER>: ");
                             num2 = br2.readLine();
                             double n2 = Double.parseDouble(num2);
                             System.out.println("\nThe second number you have entered is: " + n2);
                             System.out.println("\nYour numbers are: " + num1 + " and " + num2);
                             inputCorrect = true;
                        } catch (NumberFormatException nfe) {
                             System.out.println("You did not enter a valid number: " + "\""+ num2 + "\" is not a number!!");
                             inputCorrect = false;
                        return num2;
         public int Calculator() {
              int choice2 = (int) Double.parseDouble(choice1);
              switch (choice2) {
                        case 1 :
                             Add();
                             System.out.print("The answer of " + num1 + " + " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 2 :
                             Subtract();
                             System.out.print("The answer of " + num1 + " - " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 3 :
                             Multiply();
                             System.out.print("The answer of " + num1 + " * " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 4 :
                             Divide();
                             System.out.print("The answer of " + num1 + " / " + num2 + " is: " + decimals.format(answer));
                             Modulus();
                             System.out.print(" and the remainder is " + decimals.format(answer));
                             break;
                        case 5 :
                             maximumValue();
                             System.out.println("The maximum number between the numbers " + num1 + " and " + num2 + " is: " + decimals.format(answer));
                             minimumValue();
                             System.out.println("The minimum number between the numbers " + num1 + " and " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 6 :
                             Squareroot1();
                             System.out.println("The squareroot of value " + num1 + " is: " + decimals.format(answer));
                             Squareroot2();
                             System.out.println("The squareroot of value " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 7 :
                             absoluteNumber1();
                             System.out.println("The absolute number of " + num1 + " is: " + decimals.format(answer));
                             absoluteNumber2();
                             System.out.println("The absolute number of " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 8 :
                             octalEquivalent1();
                             System.out.println("The octal equivalent of " + num1 + " is: " + octalEquivalent1());
                             octalEquivalent2();
                             System.out.println("The octal equivalent of " + num2 + " is: " + octalEquivalent2());
                             hexadecimalEquivalent1();
                             System.out.println("\nThe hexadecimal equivalent of " + num1 + " is: " + hexadecimalEquivalent1());
                             hexadecimalEquivalent2();
                             System.out.println("The hexadecimal equivalent of " + num2 + " is: " + hexadecimalEquivalent2());
                             break;
                        case 9 :
                             Round1();
                             System.out.println("The rounded number of " + num1 + " is: " + decimals.format(answer));
                             Round2();
                             System.out.println("The rounded number of " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 0 :
                             if (choice2 == 0) {
                                  System.exit(1);
                             break;
                   return choice2;
              public String anotherCalculation() throws IOException {
                   boolean inputCorrect = false;
                   while (inputCorrect == false) {
                             try {                              
                                  BufferedReader br3 = new BufferedReader (new InputStreamReader(System.in));
                                  System.out.print("\nWould you like to do another calculation? Y/N ");
                                  more = br3.readLine();
                                  String s1 = "y";
                                  String s2 = "Y";
                                  if (more.equals(s1) || more.equals(s2)) {
                                       inputCorrect = true;
                                       while (inputCorrect = true){
                                            inputNumber1();
                                            System.out.println("");
                                            calculatorChoice();
                                            System.out.println("");
                                            inputNumber2();
                                            System.out.println("");
                                            Calculator();
                                            System.out.println("");
                                            anotherCalculation();
                                            System.out.println("");
                                            inputCorrect = true;
                                  } else {
                                       System.out.println("\n" + nameSurname + " thank you for using this program, you have used this program for: " + decimals.format(programRuntime()) + " seconds");
                                       System.out.println("the program will now exit, Goodbye.");
                                       System.exit(0);
                             } catch (IOException ex){
                                  System.out.println("You did not enter a valid answer: " + "\""+ more + "\" is not in the list!!");
                                  inputCorrect = false;
              return more;
         public static void main(String[] args) throws IOException {
              Project p1 = new Project();
              p1.insertNameAndSurname();
              System.out.println("");
              p1.inputNumber1();
              System.out.println("");
              p1.calculatorChoice();
              System.out.println("");
              p1.inputNumber2();
              System.out.println("");
              p1.Calculator();
                   System.out.println("");
                   p1.anotherCalculation();
                   System.out.println("");
    {code}
    *Can you please run my code for yourself and have a look at how this program is constructed*
    *and give me ANY feedback on how I can better this code(program) or if I've done anything wrong from your point of view.*
    Your help will be much appreciated.
    Thanks in advance

    Smirre wrote:
    Now my question is this: How can I restrict the user to only enter 'letters' (and spaces of course) but allow NO numbers for his/her surname??You cannot restrict the user. It is a sad fact in programming that the worst bug always sits in front of the Computer.
    What you could do is checking the input string for numbers. If it contains numbers, just reprompt for the Name.
    AND you might want to ask yourself why the heck a calculator needs to know the users Name.

  • Help with RMI university assignment

    Hi everybody,
    The assignment asks for the definition of three remote interfaces ICompany, IProject and IStaff, define one 1:M relationship (ICompany -> IProject) and print on the console the company together with the projects they have placed. There is no requirement for a DB therefore i've create a method on the server
    populateDummyDB(ProjectImpl proj)that fills a Vector with projects with their coresponding company ID's.
    I've also created a company instance on the server which i successfully print on the client by callingprintCompany(Object obj) but i need help with theprintProjects() so that as soon the company is printed it searches the Vector for projects that have the same companyID matches the PK with the FK and print those projects.
    Any help will be more than welcome.
    Regards,
    Nick Paicopoulos
    BSc Applied Computing.

    Thanks for the reply and sorry for the vagueness.
    The company is created and bound to RMI on the Server
    CompanyImpl myCom = new CompanyImpl("101234", "WH Smith",
                        "Nick Parks", null);
    myCom.bindToRMI("com1"); also on the Server the Vector that is defined in the ProjectImpl.java is populated
    public static void populateDummyDB(ProjectImpl proj)
                throws RemoteException {
            proj.addProject(new ProjectImpl("Project A", "10 Feb 2005", 11000,
                    "101234", null, null));
            proj.addProject(new ProjectImpl("Project B", "16 Feb 2005", 8700,
                    "178745", null, null));
            proj.addProject(new ProjectImpl("Project C", "19 Feb 2005", 17400,
                    "130928", null, null));
            proj.addProject(new ProjectImpl("Project D", "27 Feb 2005", 12800,
                    "178745", null, null));
            proj.addProject(new ProjectImpl("Project E", "04 Mar 2005", 9760,
                    "101234", null, null));
            proj.addProject(new ProjectImpl("Project F", "09 Mar 2005", 5340,
                    "178745", null, null));
            proj.addProject(new ProjectImpl("Project G", "13 Mar 2005", 15290,
                    "101234", null, null));
            proj.addProject(new ProjectImpl("Project H", "17 Mar 2005", 5780,
                    "101234", null, null));
            proj.addProject(new ProjectImpl("Project I", "23 Mar 2005", 20100,
                    "130928", null, null));
            proj.addProject(new ProjectImpl("Project J", "30 Mar 2005", 6780,
                    "130928", null, null));
    } The company is printed successfully on the Client
    public class HKClientView{
        public static void main(String[] args) {
            HKClientView cmdUI = new HKClientView();
        public static final String SERVER_NAME = "localhost";
        public HKClientView() {
            ICompany yourCom = getRemoteCompany();
            try {
                CompanyTO yourComData = yourCom.getCompanyData();
                printCompany(yourComData);
    //            printProjects();
            } catch (RemoteException re) {
                System.out.println("Exception thrown while creating company "
                        + "instance! " + re);
        private ICompany getRemoteCompany() {
            ICompany myCompany = null;
            ProjectImpl myProject = null;
            try {
                myCompany = (ICompany) Naming.lookup("//" + SERVER_NAME + "/com1");
            } catch (Exception e) {
                System.out.println("Exception thrown while creating company "
                        + "instance! " + e);
            return myCompany;
        private void printCompany(Object obj) {
            System.out.println(obj.toString());
    } If you look closely at my dummy DB table four out of the ten projects belong to the company that i've created since the have common companyID = "101234". How can i get those projects printed on the Client?
    Regards,
    Nick Paicopoulos.

  • Help with JAVA StringObject - & assign user input; StringMethod

    Hi Everyone! I need help with this Java Program, I need to write a program, single class, & file. That will prompt the user to enter a word. The output will be separted by hypens and do this until the user enters exit. I think this is done by using a string variable. Then use the length of the word to setup a loop to print each letter out with hypens. (example c-a-t)
    1. I think I should store the word like this: Word.Method(). Not sure of this the API was confusing for me because I wasn't sure of what to do.
    2. A string method to find out how many letters are in the user's word in order to setup a loop to print each letter out. I think I can use a While loop to accomplish this?
    3. A string method to access each letter in a string object individually in order to print individual letters to the screen with those hypens. This is really confusing for me? Can this be accomplished in the While loop? or do I declare variables in the main method.
    Any examples you can refer me to would be greatly appreciated. Thanks

    Getting user input:
    This may look strange to a newbie but there's nothing much you can do since you wanted a single class file:import java.io.*
    public class InputTest {
       public static void main(String[] args) {
          BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
          System.out.println("Hi! Please type a word and press enter.");
          String lineReadFromUser = in.readLine();
          System.out.println("You typed " + lineReadFromUser);
    }You can get the lenght of a String using the length() method. Example: int len = "Foobar".length();
    You can get the individual characters of a String with the charAt() method. Example: char firstCharOfString = string.charAt(0);
    (remember that the argument must be from 0 to length-1)
    You can access the documentation of all classes, including java.lang.String, at http://java.sun.com/j2se/1.3/docs/api/index.html You can also download the docs.

  • I also need help with a programming assingment. I think I'm almost there!

    I have the following assingment to complete:Once again, you realize that you need to upgrade your Java program with two more features:
    Be able to print products which are �On Sale�.
    Use arrays to store the product names so that you can keep track of your inventory.
    After some analysis, you notice that printing the products can be achieved by modifying the two classes you have already written. One approach would be to add a Boolean attribute called �OnSale� to the ToddlerToy and add a print method that print information about a product indicating if it is �On Sale�.
    Update your constructor, taking into account the �On Sale� attribute.
    Create two more instances: a small train called Train4 and a big train called Train5. Mark both trains �On Sale�
    Add another method that prints the sale information
    Keeping track of the names of products can be achieved by declaring an array of strings in the ToysManager class itself. Each time a new product is created, it is also added to the array. Use a while construct to print the product names in your inventory.
    This is the code I have come up with:
    public class ToysManager {
         private String toyInventory[] = {"Big Train","Small Train"};
         public void printInventory() {
         System.out.println("List of Items in Toy Inventory");
         for (int i=0; i<toyInventory.length; i++)
         { System.out.println(toyInventory[i])); } // ";"expected - ToysManager.java
         public static void main(String[] args) {
              //System.out.println("This is the main method of class ToysManager.");
              //call on ToysManager printInventory method for a listing of all toy types
              printInventory();
              // Create ToddlerToy Objects Train1,Train2,Train3,Train4,Train5
         ToddlerToy Train1 = new ToddlerToy(489, "Big Train", 19.95,false);
         Train1.printOnSale();
         ToddlerToy Train2 = new ToddlerToy(489, "Big Train", 19.95,false);
         Train2.printOnSale();
         ToddlerToy Train3 = new ToddlerToy(477, "Small Train", 12.95,false);
         Train3.printOnSale();
         ToddlerToy Train4 = new ToddlerToy(477, "Small Train", 12.95,true);
         Train4.printOnSale();
         ToddlerToy Train5 = new ToddlerToy(489, "Big Train", 19.95,true);
         Train5.printOnSale();
    }     //this is the end bracket for the main method
    }          //this is the end bracket for the ToysManager class
    class ToddlerToy {
         // Initialize and Assign Data Types to each Variables
         private int productID;
         public String productName;
         public double productPrice;
         private boolean onSale;
    public void ToddlerToy(int a, String b, double c, boolean d) {
         // Assign Data to Variables
         productID = a;
         productName = b;
         productPrice = c;
         onSale = d;
         //PrintProductPrice(ProductPrice);
         } //end of constructor
    public void printOnSale(){
         if(onSale == true) System.out.println("This item #" + productID + ": " + productName + "is on sale");
    I don't have any problems with class ToddlerToy. I can compile that with no problems. I'm having issues with public class ToysManager. I can't compile that one correctly. It fails at:
    { System.out.println(toyInventory[i])); } // ";"expected - ToysManager.java
    I've looked through the java books I have and also online, but I can't figure this out. I'm new to java so any help would be appreciated.
    Thanks in advance.

    Thanks. That got me past that error. I was hung up on that for far too long. I made some changes and when i compile the ToysManager class it shoots a different error. The code now looks like this:
    public class ToysManager {
         private String toyInventory[] = {"Big Train","Small Train"};
         public void printInventory() {
         System.out.println("List of Items in Toy Inventory");
         for (int i=0; i<toyInventory.length; i++){
         System.out.println(toyInventory);
         public static void main(String[] args) {
              //System.out.println("This is the main method of class ToysManager.");
              //call on ToysManager printInventory method for a listing of all toy types
              printInventory();
              // Create ToddlerToy Objects Train1,Train2,Train3,Train4,Train5
         ToddlerToy Train1 = new ToddlerToy(489, "Big Train", 19.95,false);
         Train1.printOnSale();
         ToddlerToy Train2 = new ToddlerToy(489, "Big Train", 19.95,false);
         Train2.printOnSale();
         ToddlerToy Train3 = new ToddlerToy(477, "Small Train", 12.95,false);
         Train3.printOnSale();
         ToddlerToy Train4 = new ToddlerToy(477, "Small Train", 12.95,true);
         Train4.printOnSale();
         ToddlerToy Train5 = new ToddlerToy(489, "Big Train", 19.95,true);
         Train5.printOnSale();
         }     //this is the end bracket for the main method
    }          //this is the end bracket for the ToysManager class
    I get an illegal start of expression for:
         public static void main(String[] args) {
    and ";" expected for:
         }     //this is the end bracket for the main method
    I looked over my initial code, before the "for" loop?, and the public static void main was a valid statement.

  • New to Java and need help with this program..please!

    I'd really appreciate any helpful comments about this program assignment that I have to turn in a week from Friday. I'm taking a class one night a week and completely new to Java. I'd ask my professor for help, but we can't call him during the week and he never answers e-mails. He didn't tell us how to call from other classes yet, and I just can't get the darn thing to do what I want it to do!
    The assignment requirements are:
    1. Change a card game application that draws two cards
    and the higher card wins, to a Blackjack application
    2. Include a new class called Hand
    3. The Hand class should record the number of draws
    4. The application should prompt for a number of draws
    5. The game is played against the Dealer
    6. The dealer always draws a card if the dealer's hand total is <= 17
    7. Prompt the player after each hand if he wants to quit
    8. Display the total games won by the dealer and total and the total games wond by the player after each hand
    9. Display all of the dealer's and player's cards at the
    end of each hand
    10. Player has the option of drawing an additional card after the first two cards
    11. The Ace can have a value of 11 or 1
    (Even though it's not called for in the requirements, I would like to be able to let the Ace have a value of 1 or an 11)
    The following is my code with some comments about a few things that are driving me nuts:
    import java.util.*;
    import javax.swing.*;
    import java.text.*;
    public class CardDeck
    public CardDeck()
    deck = new Card[52];
    fill();
    shuffle();
    public void fill()
    int i;
    int j;
    for (i = 1; i <= 13; i++)
    for (j = 1; j <= 4; j++)
    deck[4 * (i - 1) + j - 1] = new Card(i, j);
    cards = 52;
    public void shuffle()
    int next;
    for (next = 0; next < cards - 1; next++)
    int rand = (int)(Math.random()*(next+1));
    Card temp = deck[next];
    deck[next] = deck[rand];
    deck[rand] = temp;
    public final Card draw()
    if (cards == 0)
    return null;
    cards--;
    return deck[cards];
    public int changeValue()
    int val = 0;
    boolean ace = false;
    int cds;
    for (int i = 0; i < cards; i++)
    if (cardValue > 10)
    cardValue = 10;
    if (cardValue ==1)     {
    ace = true;
    val = val + cardValue;
    if ( ace = true && val + 10 <= 21 )
    val = val + 10;
    return val;
    public static void main(String[] args)
    CardDeck d = new CardDeck();
    int x = 3;
    int i;
    int wins = 1;
    int playerTotal = 1;
    do {
    Card dealer = (d.draw());
    /**I've tried everything I can think of to call the ChangeValue() method after I draw the card, but nothing is working for me.**/
    System.out.println("Dealer draws: " + dealer);
    do {
    dealer = (d.draw());
    System.out.println(" " + dealer);
    }while (dealer.rank() <= 17);
    Card mine = d.draw();
    System.out.println("\t\t\t\t Player draws: "
    + mine);
    mine = d.draw();
    System.out.println("\t\t\t\t\t\t" + mine);
    do{
    String input = JOptionPane.showInputDialog
    ("Would you like a card? ");
    if(input.equalsIgnoreCase("yes"))
         mine = d.draw();
    System.out.println("\t\t\t\t\t\t" + mine);
         playerTotal++;
         else if(input.equalsIgnoreCase("no"))
    System.out.println("\t\t\t\t Player stands");
         else
    System.out.println("\t\tInvalid input.
    Please try again.");
    I don't know how to go about making and calling a method or class that will combine the total cards delt to the player and the total cards delt to the dealer. The rank() method only seems to give me the last cards drawn to compare with when I try to do the tests.**/
    if ((dealer.rank() > mine.rank())
    && (dealer.rank() <= 21)
    || (mine.rank() > 21)
    && (dealer.rank() < 22)
    || ((dealer.rank() == 21)
    && (mine.rank() == 21))
    || ((mine.rank() > 21)
    && (dealer.rank() <= 21)))
    System.out.println("Dealer wins");
    wins++;
         else
    System.out.println("I win!");
    break;
    } while (playerTotal <= 1);
    String stop = JOptionPane.showInputDialog
    ("Would you like to play again? ");
    if (stop.equalsIgnoreCase("no"))
    break;
    if (rounds == 5)
    System.out.println("Player wins " +
    (CardDeck.rounds - wins) + "rounds");
    } while (rounds <= 5);
    private Card[] deck;
    private int cards;
    public static int rounds = 1;
    public int cardValue;
    /**When I try to compile this nested class, I get an error message saying I need a brace here and at the end of the program. I don't know if any of this code would work because I've tried adding braces and still can't compile it.**/
    class Hand()
    static int r = 1;
    public Hand() { CardDeck.rounds = r; }
    public int getRounds() { return r++; }
    final class Card
    public static final int ACE = 1;
    public static final int JACK = 11;
    public static final int QUEEN = 12;
    public static final int KING = 13;
    public static final int CLUBS = 1;
    public static final int DIAMONDS = 2;
    public static final int HEARTS = 3;
    public static final int SPADES = 4;
    public Card(int v, int s)
    value = v;
    suit = s;
    public int getValue() { return value; }
    public int getSuit() { return suit;  }
    public int rank()
    if (value == 1)
    return 4 * 13 + suit;
    else
    return 4 * (value - 1) + suit;
    /**This works, but I'm confused. How is this method called? Does it call itself?**/
    public String toString()
    String v;
    String s;
    if (value == ACE)
    v = "Ace";
    else if (value == JACK)
    v = "Jack";
    else if (value == QUEEN)
    v = "Queen";
    else if (value == KING)
    v = "King";
    else
    v = String.valueOf(value);
    if (suit == DIAMONDS)
    s = "Diamonds";
    else if (suit == HEARTS)
    s = "Hearts";
    else if (suit == SPADES)
    s = "Spades";
    else
    s = "Clubs";
    return v + " of " + s;
    private int value; //Value is an integer, so how can a
    private int suit; //string be assigned to an integer?
    }

    Thank you so much for offering to help me with this Jamie! When I tried to call change value using:
    Card dealer = (d.changeValue());
    I get an error message saying:
    Incompatible types found: int
    required: Card
    I had my weekly class last night and the professor cleared up a few things for me, but I've not had time to make all of the necessary changes. I did find out how toString worked, so that's one question out of the way, and he gave us a lot of information for adding another class to generate random numbers.
    Again, thank you so much. I really want to learn this but I'm feeling so stupid right now. Any help you can give me about the above error message would be appreciated.

  • Help with Paint program.

    Hello. I am somewhat new to Java and I was recently assigned to do a simple paint program. I have had no trouble up until my class started getting into the graphical functions of Java. I need help with my program. I am supposed to start off with a program that draws lines and changes a minimum of 5 colors. I have the line function done but my color change boxes do not work and I am able to draw inside the box that is supposed to be reserved for color buttons. Here is my code so far:
    // Lab13110.java
    // The Lab13 program assignment is open ended.
    // There is no provided student version for starting, nor are there
    // any files with solutions for the different point versions.
    // Check the Lab assignment document for additional details.
    import java.applet.Applet;
    import java.awt.*;
    public class Lab13110 extends Applet
         int[] startX,startY,endX,endY;
         int currentStartX,currentStartY,currentEndX,currentEndY;
         int lineCount;
         Rectangle red, green, blue, yellow, black;
         int numColor;
         Image virtualMem;
         Graphics gBuffer;
         int rectheight,rectwidth;
         public void init()
              startX = new int[100];
              startY = new int[100];
              endX = new int[100];
              endY = new int[100];
              lineCount = 0;
              red = new Rectangle(50,100,25,25);
              green = new Rectangle(50,125,25,25);
              blue = new Rectangle(50,150,25,25);
              yellow = new Rectangle(25,112,25,25);
              black = new Rectangle(25,137,25,25);
              numColor = 0;
              virtualMem = createImage(100,600);
              gBuffer = virtualMem.getGraphics();
              gBuffer.drawRect(0,0,100,600);
         public void paint(Graphics g)
              for (int k = 0; k < lineCount; k++)
                   g.drawLine(startX[k],startY[k],endX[k],endY[k]);
              g.drawLine(currentStartX,currentStartY,currentEndX,currentEndY);
              g.setColor(Color.red);
              g.fillRect(50,100,25,25);
              g.setColor(Color.green);
              g.fillRect(50,125,25,25);
              g.setColor(Color.blue);
              g.fillRect(50,150,25,25);
              g.setColor(Color.yellow);
              g.fillRect(25,112,25,25);
              g.setColor(Color.black);
              g.fillRect(25,137,25,25);
              switch (numColor)
                   case 1:
                        g.setColor(Color.red);
                        break;
                   case 2:
                        g.setColor(Color.green);
                        break;
                   case 3:
                        g.setColor(Color.blue);
                        break;
                   case 4:
                        g.setColor(Color.yellow);
                        break;
                   case 5:
                        g.setColor(Color.black);
                        break;
                   case 6:
                        g.setColor(Color.black);
                        break;
              g.setColor(Color.black);
              g.drawRect(0,0,100,575);
         public boolean mouseDown(Event e, int x, int y)
              currentStartX = x;
              currentStartY = y;
              if(red.inside(x,y))
                   numColor = 1;
              else if(green.inside(x,y))
                   numColor = 2;
              else if(blue.inside(x,y))
                   numColor = 3;
              else if(yellow.inside(x,y))
                   numColor = 4;
              else if(black.inside(x,y))
                   numColor = 5;
              else
                   numColor = 6;
              repaint();
              return true;
         public boolean mouseDrag(Event e, int x, int y)
              int Rectheight = 500;
              int Rectwidth = 900;
              currentEndX = x;
              currentEndY = y;
              Rectangle window = new Rectangle(0,0,900,500);
              //if (window.inside(Rectheight,Rectwidth))
                   repaint();
              return true;
         public boolean mouseUp(Event e, int x, int y)
              int Rectheight = 500;
              int Rectwidth = 900;
              startX[lineCount] = currentStartX;
              startY[lineCount] = currentStartY;
              endX[lineCount] = x;
              endY[lineCount] = y;
              lineCount++;
              Rectangle window = new Rectangle(0,0,900,500);
              if (window.inside(Rectheight,Rectwidth))
                   repaint();
              return true;
         public void Rectangle(Graphics g, int x, int y)
              g.setColor(Color.white);
              Rectangle screen = new Rectangle(100,0,900,600);
    }If anyone could point me in the right direction of how to go about getting my buttons to work and fixing the button box, I would be greatly appreciative. I just need to get a little bit of advice and I think I should be good after I get this going.
    Thanks.

    This isn't in any way a complete solution, but I'm posting code for a mouse drag outliner. This may be preferable to how you are doing rectangles right now
    you are welcome to use and modify this code but please do not change the package and make sure that you tell your teacher where you got it from
    MouseDragOutliner.java
    package tjacobs.ui;
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.Stroke;
    import java.awt.event.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    * See the public static method addAMouseDragOutliner
    public class MouseDragOutliner extends MouseAdapter implements MouseMotionListener {
         public static final BasicStroke DASH_STROKE = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL, 10.0f, new float[] {8, 8}, 0);
         private boolean mUseMove = false;
         private Point mStart;
         private Point mEnd;
         private Component mComponent;
         private MyRunnable mRunner= new MyRunnable();
         private ArrayList mListeners = new ArrayList(1);
         public MouseDragOutliner() {
              super();
         public MouseDragOutliner(boolean useMove) {
              this();
              mUseMove = useMove;
         public void mouseDragged(MouseEvent me) {
              doMouseDragged(me);
         public void mousePressed(MouseEvent me) {
              mStart = me.getPoint();
         public void mouseEntered(MouseEvent me) {
              mStart = me.getPoint();
         public void mouseReleased(MouseEvent me) {
              Iterator i = mListeners.iterator();
              Point end = me.getPoint();
              while (i.hasNext()) {
                   ((OutlineListener)i.next()).mouseDragEnded(mStart, end);
              //mStart = null;
         public void mouseMoved(MouseEvent me) {
              if (mUseMove) {
                   doMouseDragged(me);
         public     void addOutlineListener(OutlineListener ol) {
              mListeners.add(ol);
         public void removeOutlineListener(OutlineListener ol) {
              mListeners.remove(ol);
         private class MyRunnable implements Runnable {
              public void run() {
                   Graphics g = mComponent.getGraphics();
                   if (g == null) {
                        return;
                   Graphics2D g2 = (Graphics2D) g;
                   Stroke s = g2.getStroke();
                   g2.setStroke(DASH_STROKE);
                   int x = Math.min(mStart.x, mEnd.x);
                   int y = Math.min(mStart.y, mEnd.y);
                   int w = Math.abs(mEnd.x - mStart.x);
                   int h = Math.abs(mEnd.y - mStart.y);
                   g2.setXORMode(Color.WHITE);
                   g2.drawRect(x, y, w, h);
                   g2.setStroke(s);
         public void doMouseDragged(MouseEvent me) {
              mEnd = me.getPoint();
              if (mStart != null) {
                   mComponent = me.getComponent();
                   mComponent.repaint();
                   SwingUtilities.invokeLater(mRunner);
         public static MouseDragOutliner addAMouseDragOutliner(Component c) {
              MouseDragOutliner mdo = new MouseDragOutliner();
              c.addMouseListener(mdo);
              c.addMouseMotionListener(mdo);
              return mdo;
         public static interface OutlineListener {
              public void mouseDragEnded(Point start, Point finish);
         public static void main(String[] args) {
              JFrame f = new JFrame("MouseDragOutliner Test");
              Container c = f.getContentPane();
              JPanel p = new JPanel();
              //p.setBackground(Color.BLACK);
              c.add(p);
              addAMouseDragOutliner(p);
              f.setBounds(200, 200, 400, 400);
              f.addWindowListener(new WindowClosingActions.Exit());
              f.setVisible(true);
    }

  • Help with AND/OR Search

    Hi all,
    I'm setting up an 'Advanced Search' feature using a filter function and need some help with the logic - seem to be suffering a brain fade...
    There's a search form with (let's say) 4 different options:  Name, Description, Price, Features.
    I want the user to be able to fill in all or none of the fields and return the matching results.
    I can do an OR function like this:
    if(Name.match(regx1) || Description.match(regx2) || Price .match(regx3) )|| Features .match(regx4){
         return true;
    }else{
         return false;
    I know I could change the "||" to "&&" - but I need to do this only if there's something to search...
    The only way I can think of doing this at the moment is to write a bunch of 'if statements' with all permutations - eg:
    if(Name && !Description && !Price && !Features){
         //match Name only
    }else if(Name && Description && !Price && !Features){
         //match Name & Description
    }else... you get the idea
    Thanks for your help!
    Cheers

    hey Madhav,
    Thanks for the pointer.  I haven't used a bitwise AND Assignment before...
    When I write some code like below I get a compile error saying "Implicit conversion of type Boolean to an unrelated type Integer"
    From what I understand, 'criteria' should remain true only if the comparator is true.  But why do I get a compile error?
    Do you know what I'm doing wrong?
    var criteria:Boolean = true;
    var nameMatch:Boolean = false;
    if(name){
         if(name.match){
              nameMatch = true;
    if(name){
        crieteria &= nameMatch;  // compile error here
    thanks for your help!

  • Help with treemap and other stuff

    hi guys..
    i m new to this forum..
    and this is my first post....so if i act a little naive .....please bare with me.
    and if this is not the correct place to post ..i m sorry for that.
    i have an assignment to submit....i m getting the whole picture ....but not sure how to go about implementing it.
    here it is...
    Write an Object Oriented solution to the problem in Java. The solution is to consist of:
    A TableIndex class
    A TableNavigator Interface
    A data row class ....class that i have to create.
    An application class to use and test your TableIndex class
    The following UML class diagrams show the public methods of the classes. Other methods may be specified. Specify data members, inner classes and interfaces as appropriate.
    TableIndex Class
    The TableIndex class is an index to a collection of objects. The class is to approximate an index to a data table in memory that consists of a number of rows. To control access to the index a current row is defined that specifies the row that can be accessed. To retrieve a row from the index it must be the current row. The get() method is the only method in TableIndex class that retrieves a row from the index. The current row can be changed explicitly using the methods: previous(), next(), first(), last(), gotoBookmark and find(K); and implicitly using insert(K, V), modify(K, V) and remove().
    The TableIndex class is to be implemented using the java API's TreeMap class and must use Generics. The data types K and V below are generic types for the Key and Value (row) respectively. An important aspect of the assignment is using the Java API documentation to understand the TreeMap class.
    guys ....can u plz help with the starting bit ..
    what should be the opening statement of the class...
    public class TableIndex<K , V> .....????
    and what should be the treemap declaration..??
    TreeMap<K , V> indexTable = new TreeMap<K , V>();...???
    i m confused....
    can u plz explain to me..

    hi mate.....didnt quite get you..
    can u plz be a bit more simple in explanation..!!!
    i will post the whole question ..so that anyone reading will understand better....
    Problem Description
    You are to develop an index class and associated classes.
    Requirements
    Write an Object Oriented solution to the problem in Java. The solution is to consist of:
    A TableIndex class
    A TableNavigator Interface
    A data row class
    An application class to use and test your TableIndex class
    The following UML class diagrams show the public methods of the classes. Other methods may be specified. Specify data members, inner classes and interfaces as appropriate.
    TableIndex Class
    The TableIndex class is an index to a collection of objects. The class is to approximate an index to a data table in memory that consists of a number of rows. To control access to the index a current row is defined that specifies the row that can be accessed. To retrieve a row from the index it must be the current row. The get() method is the only method in TableIndex class that retrieves a row from the index. The current row can be changed explicitly using the methods: previous(), next(), first(), last(), gotoBookmark and find(K); and implicitly using insert(K, V), modify(K, V) and remove().
    The TableIndex class is to be implemented using the java API's TreeMap class and must use Generics. The data types K and V below are generic types for the Key and Value (row) respectively. An important aspect of the assignment is using the Java API documentation to understand the TreeMap class.
    TableIndex
    +TableIndex()
    +TableIndex(name: String, comp: Comparator)
    +getName(): String
    +isEmpty(): Boolean
    +size(): Integer
    +hasPrevious(): Boolean
    +hasNext(): Boolean
    +previous()
    +next()
    +first()
    +last()
    +setBookmark(): Boolean
    +clearBookmark()
    +gotoBookmark(): Boolean
    +contains(key: K): Boolean
    +find(key: K): Boolean
    +get(): V
    +insert(key:K, value: V): Boolean
    +modify(value: V): Boolean
    +modify(key: K, value: V): Boolean
    +remove(): V
    +iterator(): Iterator
    +equals(obj2: Object): Boolean
    +toString(): String
    Additional Notes:
    The table index has an order defined by the compareTo method of the key's class or by the compare method specified in the class that implements the Comparator interface.
    getName(): the name of the index, blank by default.
    isEmpty(): returns true if there aren't any rows in the table index
    size(): returns the number of rows in the table index
    hasPrevious(): returns true if there is a row before the current row.
    hasNext(): returns true if there is a row after the current row in sequence.
    previous(): if there is a row before the current row, move to the row and make it the new current row.
    next() if there is a row after the current row, move to the row and make it the new current row.
    first(): if the table isn't empty, move to the first row and make it the new current row.
    last(): if the table isn't empty, move to the last row and make it the new current row.
    setBookmark(): sets a bookmark at the current row. If the bookmark is successfully set the method returns true. The bookmark is cleared if the TableIndex is empty or the row the bookmark was set on is deleted..
    clearBookmark(): sets the bookmark to null, indicating there isn't a bookmark.
    gotoBookmark(): if a bookmark has been set, go to the bookmarked row. If successful the book marked row becomes the current row and the method returns true.
    contains(K): return true if a row with the key specified exists.
    find(K): if a row is found with the specified key, the current row is set to the row found.
    get(): returns the current row. Null is returned if there isn't a current row.
    insert(K, V): inserts a row (value) with the key specified. The key must not be null and must be unique (not already in the TableIndex). The row (value) must not be null. If the row is successfully inserted true is returned, and the row becomes the current row..
    modify(V): change the current row's data to the row (value) specified. The key and the current row key are to remain the same. If successful true is returned.
    modify(K, V): change the current row's key and data to the key and row (value) specified. If successful the changed row becomes the new current row. If successful true is returned. Note: this is more difficult than modify(V).
    remove(): remove the current row. When a row is deleted the next row (if available) becomes the current row, otherwise if there isn't a next row the previous row becomes the current row, otherwise the table is empty therefore the current row is null.
    iterator(): returns an iterator to the rows (values) in the index. The rows are to be retrieved in order. The remove method does not need to be implemented (its method body can be empty)..
    the equals method uses the name, and the rows (values) in order when testing for equality.
    the toString method should return appropriately formatted data members and the rows (values/data) in the index.
    TableNavigator Interface
    «interface»
    TableNavigator
    +isEmpty(): Boolean
    +hasPrevious(): Boolean
    +hasNext(): Boolean
    +previous()
    +next()
    +first()
    +last()
    +contains(key: K): Boolean
    +find(key: K): Boolean
    Additional Notes:
    The TableIndex class implements the TableNavigator Interface.
    The purpose of the above methods is outlined in the TableIndex class.
    Your Data Row Class
    You are to include a class of your own to represent a row of data in the TableIndex. This is not to be a class that was covered in other programming subjects. It does not need to be complex but must include a range of data types. This class will be used to test your TableIndex class. The class should have an appropriate name and deal with something of interest to you.
    Your Application Class
    The application class is to make use of the TableIndex class and your data row class. It is to clearly show how the TableIndex class is used, and in doing so, test it. The class should have an appropriate name. The application class should create two indexes of different key data types. One of the indexes must make use of the Comparator interface to have a key that is in descending order.
    Output
    Output in the test classes/programs is to go to standard out or a text file. There should be no output from the TableIndex class or your data row class. A GUI interface is NOT required. There is no need to input data from the keyboard or file. Use the Unix script command or write output to a text file (etc) to provide example runs of your test programs.

  • Help with Filtering a JTable by multiple columns

    Hi everyone, I need some help with filtering a JTable.
    Basically I have five columns in my table and five text fields for Username, First Name, Last Name, Address and Phone Number.
    What I need to do is have each text field filter the column it is assigned to. So if the table was
    So if I put 'foo' into the username field and two users have a username containing 'foo' they stay on the table, but if i also enter text in first name, say 'john' and only one of those entries has a first name of 'john', the other disappears.
    I'm probably not explaining that very well so let me know if you need clarification.
    I found this code (which I assume works correctly) but I don't know how to interface it with my other class that displays the JTable
    import javax.swing.RowFilter;
    public class UsersFilter extends RowFilter {
         private String[] filters;
         public UsersFilter(String uName, String fName, String lName, String address, String phone) {
              filters = new String[]{uName, fName, lName, address, phone};
        public void setFilter(int column, String filter) {
            if(column < filters.length)
                filters[column] = filter;
        public boolean include(Entry entry) {
            boolean result = true;
            for (int i = 0; i < filters.length; i++) {
                if (result && !(filters.equals("")) ) {
    String v = entry.getValue(i).toString();
    result = v.startsWith(filters[i]);
    return result;

    dbuvid wrote:
    Hi everyone, I need some help with filtering a JTable.For 1.6+, set a RowSorter (which can also do filtering). Details in the 1.6 JavaDocs for JTable.

Maybe you are looking for

  • Still ! having issues connecting Vista or XP PCs to Time Capsule disk

    I know there are several posts on this subject, but I've followed most/all of them (as well as posts on other forums) and I still have not had any luck. If anyone with experience in this can help me through it, I'd greatly appreciate it! My setup is

  • Can i set a pdf document to print back to back every time?

    have had a look through the help menus but no luck, just wondered if i could change the print settings so that when people open the document it automatically prints back to back every time? thanks in advance.

  • Can I make a professional e-newsletter using Pages?

    I am trying to make a professional e-newsletter to send to my clients using the Pages program. I do not want to send as PDF files. I want the page/newsletter to be directly read in the body of the e-mail. I was wondering if I could just send an HTML

  • DTL won't eject on dual layer disc "deadline please help"

    Hi everyone, I'm working on the 2 discs dualayer dvd-9. My 2nd disc went fine & the replication house is very happy. However my 1st disc is failed. I need help from a guru quick. Ok here's the 1st deal: on my 2nd disc, DSP4 ask me to insert the 2nd d

  • Question about XML DOM de-bugging.

    I have programmed the following class as an excercise in using the DOM and in recursion. I'm having trouble,however, in debugging my iterate() method. Sometimes it fails to print certain outer tags. I'm faily confident there aren't any problems in us