Help me with an implementation of a 2-3-4 three
so here's my code first of all:
public class TwoNode extends AbstractNode{
private TwoFive leftTree = new TwoFive();
private String data;
private TwoFive rightTree = new TwoFive();
public TwoNode(String word) {
data = word;
@Override
public void inOrder() {
@Override
public void insert(TwoFive T, String d) {
AbstractNode node = search(T, d);
@Override
public boolean isEmpty(TwoFive tree) {
// TODO Auto-generated method stub
return false;
@Override
public AbstractNode search(TwoFive T, String n) {
if (data.equals(n))
return this;
else{
if (data.compareTo(n) < 0){
return leftTree.search(n);
}else
return rightTree.search(n);
}and here's the TwoFive class:
public class TwoFive {
private AbstractNode root;
public TwoFive(){
root = null;
public TwoFive(String n){
root = new TwoNode(n);
public final boolean isEmpty() {
return root.isEmpty(this);
public void insert(String n) {
root.insert(this,n);
public AbstractNode search(TwoFive T, String n){
return root.search(this, n);
}do you think the searching will work?
I am not really sure if I need that extra parameter TwoFive T, in the TwoFive class
I left my mind-reading cap at work, so how's about a little more information. Or even better, a lot more information. You would do yourself and all of us a favor by reading this before posting again in this forum: [How To Ask Questions The Smart Way|http://www.catb.org/~esr/faqs/smart-questions.html]
Note that this is not being smarmy as I re-read this site at least twice a month. If you follow it you will post questions that others will actually want to answer.
Similar Messages
-
Help needed with basic implementation of drawrect: in NSView
i've read the sections concerning the above in the "view guides for cocoa" docs, as well as several tutorials, but for the life of me i can't figure out how to do a very simple thing.
all the examples i've seen explain how to use NSRect and NSBezierPath, with fills and strokes, *from within* the drawRect: method. but i want to pass a custom object as a method argument to the view object (say, from inside my controller object when a user presses a button), and then write the code needed to run some getters on the object and draw some stuff accordingly.
i've defined the view as follows in the controller class header:
MyCustomNSViewSubclass *theView;
now i just want to send that view a message like this:
[theView draw: myObject]
then i just want to add the code in the view class to do find out some things about myObject and then draw some lines. i just don't understand where to put that code and how the drawRect: method gets called. writing a method like this in the MyCustomNSViewSubclass implementation (which is instanced in "theView") doesn't help:
- (void) draw: (myObjectType *) anObject
because then i can't figure what's needed to actually update the view.
i understand i must be using a wrong approach here. any help will be much appreciated.
thanks.No no, you didn't really understand : you are the developer, you do whatever you want, it means that if you want your custom NSView to simply ask other object to draw their own contents and do nothing else in the NSView you can, but if you want your NSView to manage everything you can too...
For example, let say I want a Shape class to manage... Shapes in my views... That's not very useful since there's already the NSBezierPath class that allows you to draw a lot of things, but whatever.
That shape class is very simple, it can represent either a rectangle or a circle and it can draw itself. There's the possible implementation :
// Shape.h
#import <Cocoa/Cocoa.h>
@interface Shape : NSObject
NSRect rect;
NSColor *fillColor;
NSColor *strokeColor;
BOOL isCircle;
- (void)setRect:(NSRect)aRect;
- (void)setFillColor:(NSColor *)aColor;
- (void)setStrokeColor:(NSColor *)aColor;
- (void)setIsCircle:(BOOL)flag;
- (void)draw;
@end
// Shape.m
#import "Shape.h"
@implementation Shape
- (void)setRect:(NSRect)aRect
rect = aRect;
- (void)setFillColor:(NSColor *)aColor
if(fillColor != aColor)
[fillColor release];
fillColor = [aColor retain];
- (void)setStrokeColor:(NSColor *)aColor
if(strokeColor != aColor)
[strokeColor release];
strokeColor = [aColor retain];
- (void)setIsCircle:(BOOL)flag
isCircle = flag;
- (void)draw
NSBezierPath *temp;
if(isCircle)
temp = [NSBezierPath bezierPathWithOvalInRect:rect];
else
temp = [NSBezierPath bezierPathWithRect:rect];
[fillColor set];
[temp fill];
[strokeColor set];
[temp stroke];
- (void) dealloc
[fillColor release];
[strokeColor release];
[super dealloc];
@end
That's a very simple class, there's not even an initializer... But it's not the problem here... What we want here it's a self-drown object. You see that class is a subclass of NSObject, nothing special.
Let see now our custom NSView class, which means a subclass of NSView :
// MyView.h
#import <Cocoa/Cocoa.h>
@class Shape;
@interface MyView : NSView
NSMutableArray *shapesToDraw;
- (void)addShape:(Shape *)aShape;
- (void)removeShapeAtIndex:(unsigned)index;
@end
// MyView.m
#import "MyView.h"
#import "Shape.h"
@implementation MyView
- (id)initWithFrame:(NSRect)frame
self = [super initWithFrame:frame];
if (self)
// Here we simply create a new array that will contain our shapes to draw
shapesToDraw = [[NSMutableArray array] retain];
return self;
- (void)drawRect:(NSRect)rect
// This code simply asks to every shape in the array to draw itself
NSEnumerator *e = [shapesToDraw objectEnumerator];
Shape *shape = nil;
while(shape = [e nextObject])
[shape draw];
- (void)addShape:(Shape *)aShape
[shapesToDraw addObject:aShape];
// When the content of the array changes, we need to tell the view
// to redraw itself, we do with that message
[self setNeedsDisplay:YES];
- (void)removeShapeAtIndex:(unsigned)index
[shapesToDraw removeObjectAtIndex:index];
[self setNeedsDisplay:YES];
- (void) dealloc
[shapesToDraw release];
[super dealloc];
@end
So you see here, how do you draw objects ? Well, first you need to know them, you also need them to know how to draw themselves... In Cocoa that kind of object already exists, they're NSBezierPath, when you send the message -fill or -stroke you ask them to draw themselves with the current color.
Here, each shape will be asked one after another to draw itself in the rectangle that is defined in it. You can add a shape by creating it in a controller for example, and add it using the add method I defined, here the drawing code is actually in both classes, in fact we can consider [shape draw] as being "drawing code", that' a point to get : You can't draw outside a -drawRect: method (except in certain complex cases), but you can send messages that contains drawing code within -drawRect: to other objects. that's what I do here.
However, you need to know that an NSView doesn't only manage its drawings, it also receives events like a click of the mouse or a typed key, there's methods to manage that into the view, and if all the code of an application is inside your view class, well your code might get really big and very difficult to read, that's why we cut in smaller parts to make it easier to read and to understand.
So, do whatever you want in that -drawRect: method, you know, here I put a -draw method into the Shape class, but I could also have put method to get the NSRect value, the fill color, the stroke color and the kind of shape and make the drawing code directly in the view. You can do whatever you want.
So, to summarize, you don't "send" objects for your view to draw. The view draws what the -drawRect: methods draws, and not more so if you want your view to draw custom paths, you can use the technic I gave you, that is for example you put a NSMutableArray into your view and create a ColoredPath class that own an NSBezierPath and two NSColor (fill and stroke) and you define a -draw method that your view will call on each ColoredPath objects that the array contains.
That's a work around. But depending in what you actually want to do, there's a lot of different solutions.
Now, talking about the interface problem. In IB when you drag a custom view on the window, by default that object is set to NSView, so you need to make it an instance of your own view subclass.
If you're under Leopard with Xcode 3 and IB 3, in IB you click on your view and go in Identify Inspector (cmd + 6) you type the name of your subclass in the Class field, if you already created the class files, the name should appear before you finished.
If you're under Xcode 2 and IB 2, you go in the Custom Class Inspector (also cmd + 6) and you select your custom class in the list.
The name of your class should replace the "Custom Class" label on the view.
That's how you set the class of a view in IB and make your app call your code when the view needs to display. -
Help required with badi implementation for IBASE
Hi,
I have implemented and activated a BADI (Defination name: BADI_IBASE_SAVE_CHCK). This BADI is for additional checks before changes to an IBASE is saved. However, this BADI is not getting triggered.
I tried debugging the transaction IB52 during the SAVE operation, but couldnt get the reason.
Can anyone help me out with this...
I implemeted the BADI from the SPRO transaction in the following path.
SPRO>Customer Relationship Management>Master Data>Installed Base> Enhancements-->BADI:Additional check when saving Installed Base.Hi Dharmendra,
Check if this is your case..
Note
This Business Add-In is not suitable for checking individual field content in an installed base, or installed base component: To do this, see Business Add-In: Additional Checks When Modifying Installed Base Headers and Business Add-In: Additional Checks When Modifying Components.
Regards.
Manuel -
Can someone pls help me with this code
The method createScreen() creates the first screen wherein the user makes a selection if he wants all the data ,in a range or single data.The problem comes in when the user makes a selection of single.that then displays the singleScreen() method.Then the user has to input a key data like date or invoice no on the basis of which all the information for that set of data is selected.Now if the user inputs a wrong key that does not exist for the first time the program says invalid entry of data,after u click ok on the option pane it prompts him to enter the data again.But since then whenever the user inputs wrong data the program says wrong data but after displaying the singlescreen again does not wait for input from the user it again flashes the option pane with the invalid entry message.and this goes on doubling everytime the user inputs wrong data.the second wrong entry of data flashes the error message twice,the third wrong entry flashes the option pane message 4 times and so on.What actually happens is it does not wait at the singlescreen() for user to input data ,it straight goes into displaying the JOptionPane message for wrong data entry so we have to click the optiion pane twice,four times and so on.
Can someone pls help me with this!!!!!!!!!
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
public class MainMenu extends JFrame implements ActionListener,ItemListener{
//class
FileReaderDemo1 fd=new FileReaderDemo1();
FileReaderDemo1 fr;
Swing1Win sw;
//primary
int monthkey=1,counter=0;
boolean flag=false,splitflag=false;
String selection,monthselection,dateselection="01",yearselection="00",s,searchcriteria="By Date",datekey,smonthkey,invoiceno;
//arrays
String singlesearcharray[];
String[] monthlist={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
String[] datelist=new String[31];
String[] yearlist=new String[100];
String[] searchlist={"By Date","By Invoiceno"};
//collection
Hashtable allinvoicesdata=new Hashtable();
Vector data=new Vector();
Enumeration keydata;
//components
JButton next=new JButton("NEXT>>");
JComboBox month,date,year,search;
JLabel bydate,byinvno,trial;
JTextField yeartext,invtext;
JPanel panel1,panel2,panel3,panel4;
JRadioButton single,range,all;
ButtonGroup group;
JButton select=new JButton("SELECT");
//frame and layout declarations
JFrame jf;
Container con;
GridBagLayout gridbag=new GridBagLayout();
GridBagConstraints gc=new GridBagConstraints();
//constructor
MainMenu(){
jf=new JFrame();
con=getContentPane();
con.setLayout(null);
fr=new FileReaderDemo1();
createScreen();
setSize(500,250);
setLocation(250,250);
setVisible(true);
//This is thefirst screen displayed
public void createScreen(){
group=new ButtonGroup();
single=new JRadioButton("SINGLE");
range=new JRadioButton("RANGE");
all=new JRadioButton("ALL");
search=new JComboBox(searchlist);
group.add(single);
group.add(range);
group.add(all);
single.setBounds(100,50,100,20);
search.setBounds(200,50,100,20);
range.setBounds(100,90,100,20);
all.setBounds(100,130,100,20);
select.setBounds(200,200,100,20);
con.add(single);
con.add(search);
con.add(range);
con.add(all);
con.add(select);
search.setEnabled(false);
single.addItemListener(this);
search.addActionListener(new MyActionListener());
range.addItemListener(this);
all.addItemListener(this);
select.addActionListener(this);
public class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent a){
JComboBox cb=(JComboBox)a.getSource();
if(a.getSource().equals(month))
monthkey=((cb.getSelectedIndex())+1);
if(a.getSource().equals(date)){
dateselection=(String)cb.getSelectedItem();
if(a.getSource().equals(year))
yearselection=(String)cb.getSelectedItem();
if(a.getSource().equals(search)){
searchcriteria=(String)cb.getSelectedItem();
public void itemStateChanged(ItemEvent ie){
if(ie.getItem()==single){
selection="single";
search.setEnabled(true);
else if (ie.getItem()==all){
selection="all";
search.setEnabled(false);
else if (ie.getItem()==range){
search.setEnabled(false);
public void actionPerformed(ActionEvent ae){
if(ae.getSource().equals(select))
if(selection.equals("single")){
singleScreen();
if(selection.equals("all"))
sw=new Swing1Win();
if(ae.getSource().equals(next)){
if(monthkey<9)
smonthkey="0"+monthkey;
System.out.println(smonthkey+"/"+dateselection+"/"+yearselection+"it prints this");
allinvoicesdata=fr.read(searchcriteria);
if (searchcriteria.equals("By Date")){
System.out.println("it goes in this");
singleinvoice(smonthkey+"/"+dateselection+"/"+yearselection);
else if (searchcriteria.equals("By Invoiceno")){
invoiceno=invtext.getText();
singleinvoice(invoiceno);
if (flag == false){
System.out.println("flag is false");
singleScreen();
else{
System.out.println("its in here");
singlesearcharray=new String[data.size()];
data.copyInto(singlesearcharray);
sw=new Swing1Win(singlesearcharray);
public void singleinvoice(String searchdata){
keydata=allinvoicesdata.keys();
while(keydata.hasMoreElements()){
s=(String)keydata.nextElement();
if(s.equals(searchdata)){
System.out.println(s);
flag=true;
break;
if (flag==true){
System.out.println("vector found");
System.exit(0);
data= ((Vector)(allinvoicesdata.get(s)));
else{
JOptionPane.showMessageDialog(jf,"Invalid entry of date : choose again");
public void singleScreen(){
System.out.println("its at the start");
con.removeAll();
SwingUtilities.updateComponentTreeUI(con);
con.setLayout(null);
counter=0;
panel2=new JPanel(gridbag);
bydate=new JLabel("By Date : ");
byinvno=new JLabel("By Invoice No : ");
dateComboBox();
invtext=new JTextField(6);
gc.gridx=0;
gc.gridy=0;
gc.gridwidth=1;
gridbag.setConstraints(month,gc);
panel2.add(month);
gc.gridx=1;
gc.gridy=0;
gridbag.setConstraints(date,gc);
panel2.add(date);
gc.gridx=2;
gc.gridy=0;
gc.gridwidth=1;
gridbag.setConstraints(year,gc);
panel2.add(year);
bydate.setBounds(100,30,60,20);
con.add(bydate);
panel2.setBounds(170,30,200,30);
con.add(panel2);
byinvno.setBounds(100,70,100,20);
invtext.setBounds(200,70,50,20);
con.add(byinvno);
con.add(invtext);
next.setBounds(300,200,100,20);
con.add(next);
if (searchcriteria.equals("By Invoiceno")){
month.setEnabled(false);
date.setEnabled(false);
year.setEnabled(false);
else if(searchcriteria.equals("By Date")){
byinvno.setEnabled(false);
invtext.setEnabled(false);
monthkey=1;
dateselection="01";
yearselection="00";
month.addActionListener(new MyActionListener());
date.addActionListener(new MyActionListener());
year.addActionListener(new MyActionListener());
next.addActionListener(this);
invtext.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent ke){
char c=ke.getKeyChar();
if ((c == KeyEvent.VK_BACK_SPACE) ||(c == KeyEvent.VK_DELETE)){
System.out.println(counter+"before");
counter--;
System.out.println(counter+"after");
else
counter++;
if(counter>6){
System.out.println(counter);
counter--;
ke.consume();
else
if(!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))){
getToolkit().beep();
counter--;
JOptionPane.showMessageDialog(null,"please enter numerical value");
ke.consume();
System.out.println("its at the end");
public void dateComboBox(){
for (int counter=0,day=01;day<=31;counter++,day++)
if(day<=9)
datelist[counter]="0"+String.valueOf(day);
else
datelist[counter]=String.valueOf(day);
for(int counter=0,yr=00;yr<=99;yr++,counter++)
if(yr<=9)
yearlist[counter]="0"+String.valueOf(yr);
else
yearlist[counter]=String.valueOf(yr);
month=new JComboBox(monthlist);
date=new JComboBox(datelist);
year=new JComboBox(yearlist);
public static void main(String[] args){
MainMenu mm=new MainMenu();
public class WindowHandler extends WindowAdapter{
public void windowClosing(WindowEvent we){
jf.dispose();
System.exit(0);
}Hi,
I had a similar problem with a message dialog. Don't know if it is a bug, I was in a hurry and had no time to search the bug database... I found a solution by using keyPressed() and keyReleased() instead of keyTyped():
private boolean pressed = false;
public void keyPressed(KeyEvent e) {
pressed = true;
public void keyReleased(KeyEvent e) {
if (!pressed) {
e.consume();
return;
// Here you can test whatever key you want
//...I don't know if it will help you, but it worked for me.
Regards. -
Can you help me with mouse pressed method please?
hi
can you help me with my problem please, player label doesn't show up in the applet and the draw string method it doesn't draw any strings like X or O for the game I don't know what is the problem maybe it is with MousePressed method which is in Board class. I tried to write the code of the location many times I'm not sure if the problem comes from there.
there is no error in my code, but it doesn't work.
this is class Board which has the mouseListener
class Board extends JPanel implements MouseListener, MouseMotionListener
private JLabel playerlabel;
private boolean play;
private boolean start;
private int turn;
private Square squares[][];
private Player myplayer[][];
public Board()
setBackground( Color.WHITE );
playerlabel = new JLabel( "X player first" );
//playerlabel.setLayout(null);
// playerlabel.setLocation(500,500);
add( playerlabel );
play = true;
turn = 1;
squares = new Square[3][3];
myplayer = new Player[3][3];
int x = 40;
int y = 40;
for (int i=0; i<3; i++){
x = 40;
for (int j=0; j<3; j++){
Square s = new Square( x,y );
squares[i][j] = s;
x +=50;
y +=50;
this.addMouseListener(this);
this.addMouseMotionListener(this);
public void mouseClicked( MouseEvent event ){}
public void mouseMoved( MouseEvent event ){}
public void mouseEntered( MouseEvent event ){}
public void mouseExited( MouseEvent event ){}
public void mousePressed( MouseEvent event )
{int xPos = event.getX();
int yPos = event.getY();
if(play && turn ==1){
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
int x = squares[i][j].getX();
int y = squares[i][j].getY();
if(xPos> x && xPos<x+40&& yPos> y && yPos<y+40){
if( squares[i][j].getOccupied() ==0 ){
String ptext;
ptext = "X";
Player p = new Player(x, y,ptext);
myplayer[i][j] = p;
squares[i][j].setOccupied(1);
playerlabel.setText( "O Player Turn" );
turn = 2;
repaint();
Win();
else{
turn = 2;
playerlabel.setText( "O Player Turn" );
repaint();
if ( play && turn ==2 )
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
int x = squares[i][j].getX();
int y = squares[i][j].getY();
if(xPos> x && xPos<x+40&& yPos> y && yPos<y+40){
if( squares[i][j].getOccupied() ==0 ){
String ptext;
ptext = "O";
Player p = new Player(x, y,ptext);
myplayer[i][j] = p;
squares[i][j].setOccupied(2);
playerlabel.setText( "X Player Turn" );
turn = 1;
repaint();
Win();
else{
turn = 1;
playerlabel.setText( "X Player Turn" );
repaint();
public void mouseReleased( MouseEvent event )
public void mouseDragged( MouseEvent event )
public void Win(){
if(squares[0][0].getOccupied() == squares[0][1].getOccupied() &&squares[0][1].getOccupied()==squares[0][2].getOccupied() &&squares[0][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if (squares[1][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[1][2].getOccupied() &&squares[1][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if(squares[2][0].getOccupied() == squares[2][1].getOccupied() &&squares[2][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
if(squares[0][0].getOccupied() == squares[0][1].getOccupied() &&squares[0][1].getOccupied()==squares[0][2].getOccupied() &&squares[0][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if (squares[1][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[1][2].getOccupied() &&squares[1][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if(squares[2][0].getOccupied() == squares[2][1].getOccupied() &&squares[2][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
//Vertically win
if (squares[0][0].getOccupied() == squares[1][0].getOccupied() &&squares[1][0].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if (squares[0][1].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][1].getOccupied() &&squares[2][1].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if(squares[0][2].getOccupied() == squares[1][2].getOccupied() &&squares[1][2].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
if (squares[0][0].getOccupied() == squares[1][0].getOccupied() &&squares[1][0].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if (squares[0][1].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][1].getOccupied() &&squares[2][1].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if(squares[0][2].getOccupied() == squares[1][2].getOccupied() &&squares[1][2].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
//Diagonal win
if (squares[0][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if (squares[0][2].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
if (squares[0][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if (squares[0][2].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
}//end win
public void setTurn(int t)
turn = t;
playerlabel.setText( "X Player Plays First" );
public void paintComponent( Graphics g )
super.paintComponent( g );
this.setBackground( Color.WHITE );
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
g.setColor( Color.BLACK );
g.drawRect( squares[i][j].getX(), squares[i][j].getY(), 50, 50 );
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
myplayer[i][j].draw(g);
//End of paintComponent
}and this is the whole code of my program.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
class Player{
private int xCoordinate;
private int yCoordinate;
private String playerText;
public Player(int x, int y, String t)
playerText = t;
xCoordinate = x;
yCoordinate = y;
public void draw(Graphics g)
g.drawString(playerText, xCoordinate, yCoordinate);
public void SetText(String t)
{ playerText = t;
}//end player
class Square
private int x;
private int y;
private int occupied;
public Square(int x1, int y1)
x = x1;
y= y1;
occupied = 0;
public void setX(int x1)
x = x1;
public int getX()
return x;
public void setY(int y1)
y = y1;
public int getY()
return y;
public void setOccupied(int o)
occupied = o;
public int getOccupied()
return occupied;
public class TicTac extends JApplet implements ActionListener
{ private JPanel panel;
private JButton newgame;
private Board B;
public void init()
B = new Board();
add( B, BorderLayout.CENTER );
panel = new JPanel();
newgame = new JButton( "New Game" );
panel.add( newgame);
add( panel, BorderLayout.SOUTH );
newgame.addActionListener(this);
public void actionPerformed( ActionEvent ev)
{ Object source = ev.getSource();
if (source == newgame)
{remove(B);
repaint();
B = new Board();
add( B, BorderLayout.CENTER );
B.setTurn(1);
repaint();
validate();
}//end class TicTac
class Board extends JPanel implements MouseListener, MouseMotionListener
private JLabel playerlabel;
private boolean play;
private boolean start;
private int turn;
private Square squares[][];
private Player myplayer[][];
public Board()
setBackground( Color.WHITE );
playerlabel = new JLabel( "X player first" );
//playerlabel.setLayout(null);
// playerlabel.setLocation(500,500);
add( playerlabel );
play = true;
turn = 1;
squares = new Square[3][3];
myplayer = new Player[3][3];
int x = 40;
int y = 40;
for (int i=0; i<3; i++){
x = 40;
for (int j=0; j<3; j++){
Square s = new Square( x,y );
squares[i][j] = s;
x +=50;
y +=50;
this.addMouseListener(this);
this.addMouseMotionListener(this);
public void mouseClicked( MouseEvent event ){}
public void mouseMoved( MouseEvent event ){}
public void mouseEntered( MouseEvent event ){}
public void mouseExited( MouseEvent event ){}
public void mousePressed( MouseEvent event )
{int xPos = event.getX();
int yPos = event.getY();
if(play && turn ==1){
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
int x = squares[i][j].getX();
int y = squares[i][j].getY();
if(xPos> x && xPos<x+40&& yPos> y && yPos<y+40){
if( squares[i][j].getOccupied() ==0 ){
String ptext;
ptext = "X";
Player p = new Player(x, y,ptext);
myplayer[i][j] = p;
squares[i][j].setOccupied(1);
playerlabel.setText( "O Player Turn" );
turn = 2;
repaint();
Win();
else{
turn = 2;
playerlabel.setText( "O Player Turn" );
repaint();
if ( play && turn ==2 )
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
int x = squares[i][j].getX();
int y = squares[i][j].getY();
if(xPos> x && xPos<x+40&& yPos> y && yPos<y+40){
if( squares[i][j].getOccupied() ==0 ){
String ptext;
ptext = "O";
Player p = new Player(x, y,ptext);
myplayer[i][j] = p;
squares[i][j].setOccupied(2);
playerlabel.setText( "X Player Turn" );
turn = 1;
repaint();
Win();
else{
turn = 1;
playerlabel.setText( "X Player Turn" );
repaint();
public void mouseReleased( MouseEvent event )
public void mouseDragged( MouseEvent event )
public void Win(){
if(squares[0][0].getOccupied() == squares[0][1].getOccupied() &&squares[0][1].getOccupied()==squares[0][2].getOccupied() &&squares[0][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if (squares[1][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[1][2].getOccupied() &&squares[1][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if(squares[2][0].getOccupied() == squares[2][1].getOccupied() &&squares[2][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
if(squares[0][0].getOccupied() == squares[0][1].getOccupied() &&squares[0][1].getOccupied()==squares[0][2].getOccupied() &&squares[0][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if (squares[1][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[1][2].getOccupied() &&squares[1][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if(squares[2][0].getOccupied() == squares[2][1].getOccupied() &&squares[2][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
//Vertically win
if (squares[0][0].getOccupied() == squares[1][0].getOccupied() &&squares[1][0].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if (squares[0][1].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][1].getOccupied() &&squares[2][1].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if(squares[0][2].getOccupied() == squares[1][2].getOccupied() &&squares[1][2].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
if (squares[0][0].getOccupied() == squares[1][0].getOccupied() &&squares[1][0].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if (squares[0][1].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][1].getOccupied() &&squares[2][1].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if(squares[0][2].getOccupied() == squares[1][2].getOccupied() &&squares[1][2].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
//Diagonal win
if (squares[0][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
else if (squares[0][2].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 1)
{playerlabel.setText("Player 1 X WON THE GAME!");
play =false; }
if (squares[0][0].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][2].getOccupied() &&squares[2][2].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
else if (squares[0][2].getOccupied() == squares[1][1].getOccupied() &&squares[1][1].getOccupied()==squares[2][0].getOccupied() &&squares[2][0].getOccupied() == 2)
{playerlabel.setText("Player 2 O WON THE GAME!");
play =false; }
}//end win
public void setTurn(int t)
turn = t;
playerlabel.setText( "X Player Plays First" );
public void paintComponent( Graphics g )
super.paintComponent( g );
this.setBackground( Color.WHITE );
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
g.setColor( Color.BLACK );
g.drawRect( squares[i][j].getX(), squares[i][j].getY(), 50, 50 );
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
myplayer[i][j].draw(g);
//End of paintComponent
Edited by: mshadows on May 18, 2008 7:53 AMI was playing with this a little bit and came up with this game model, something that I'm sure can be improved upon greatly:
TttXO.java
an enum to encapsulate X vs O. I could use a boolean here since it has 2 states, but this seems more intuitive to me
package dy08.m05.ttt;
* tic tac toe encapsulation of X vs O
* @author Pete
public enum TttXO
X, O
}TttCell.java
encapsulates an individual cell in the tictactoe grid.
package dy08.m05.ttt;
* Tic Tac Toe Game cell
* can be occupied or not
* can hold TttXO X or O or null
* @author Pete
public class TttCell
private boolean occupied = false;
private TttXO xo = null;
public TttCell()
* sets a Square for either x or o
* @param TttXO
* @return true if successful, false if already occupied
public boolean setXO(TttXO xo)
if (occupied)
return false;
else
occupied = true;
this.xo = xo;
return true;
public void reset()
occupied = false;
xo = null;
public boolean isOccupied()
return occupied;
public TttXO getXO()
return xo;
// used to test and debug the class
public String toString()
if (occupied)
return xo.toString();
else
return "-";
package dy08.m05.ttt;
* Tic Tac Toe game model
* @author Pete
public class TttGameModel
private TttCell[][] cellGrid = new TttCell[3][3];
private boolean xTurn = true;
private boolean win = false;
public TttGameModel()
for (int i = 0; i < cellGrid.length; i++)
for (int j = 0; j < cellGrid.length; j++)
cellGrid[i][j] = new TttCell();
public void reset()
xTurn = true;
win = false;
for (int i = 0; i < cellGrid.length; i++)
for (int j = 0; j < cellGrid[i].length; j++)
cellGrid[i][j].reset();
public boolean isXTurn()
return xTurn;
public boolean isWin()
return win;
* @param row
* @param col
* @return true if valid move, false if game already over or cell occupied
public boolean takeTurn(int col, int row)
TttXO currentXO = TttXO.O;
TttCell cell = cellGrid[row][col];
if (win)
return false;
if (cell.isOccupied())
return false;
if (xTurn)
currentXO = TttXO.X;
cell.setXO(currentXO);
win = checkWin(col, row, currentXO);
xTurn = !xTurn; // toggle xturn
return true;
public boolean checkWin(int col, int row, TttXO xo)
boolean win = false;
// first rows and columns
boolean temp = true;
for (int i = 0; i < 3; i++)
temp &= cellGrid[row][i].getXO() == xo;
win |= temp;
temp = true;
for (int i = 0; i < 3; i++)
temp &= cellGrid[i][col].getXO() == xo;
win |= temp;
if (row == col) // if slash diagonal
temp = true;
for (int i = 0; i < 3; i++)
temp &= cellGrid[i][i].getXO() == xo;
win |= temp;
if (row + col == 2) // if backslash diagonal
temp = true;
for (int i = 0; i < 3; i++)
temp &= cellGrid[i][2 - i].getXO() == xo;
win |= temp;
return win;
// used to test and debug the class
public String toString()
StringBuilder sb = new StringBuilder();
for (int i = 0; i < cellGrid.length; i++)
for (int j = 0; j < cellGrid[i].length; j++)
sb.append(cellGrid[i][j] + " ");
sb.append("\n");
if (win)
sb.append("win! Game over");
else
sb.append("No winner yet");
return sb.toString();
// test the class
public static void main(String[] args)
TttGameModel model = new TttGameModel();
checkMove(model, 0, 0);
checkMove(model, 1, 0);
checkMove(model, 1, 1);
checkMove(model, 2, 0);
checkMove(model, 1, 0); // bad move
checkMove(model, 2, 2);
// to test the class
private static void checkMove(TttGameModel model, int i, int j)
System.out.println("OK move: " + model.takeTurn(i, j));
System.out.println(model + "\n"); -
Help needed with passing data between classes, graph building application?
Good afternoon please could you help me with a problem with my application, my head is starting to hurt?
I have run into some difficulties when trying to build an application that generates a linegraph?
Firstly i have a gui that the client will enter the data into a text area call jta; this data is tokenised and placed into a format the application can use, and past to a seperate class that draws the graph?
I think the problem lies with the way i am trying to put the data into co-ordinate form (x,y) as no line is being generated.
The following code is from the GUI:
+public void actionPerformed(ActionEvent e) {+
+// Takes data and provides program with CoOrdinates+
int[][]data = createData();
+// Set the data data to graph for display+
grph.showGrph(data);
+// Show the frame+
grphFrame.setVisible(true);
+}+
+/** set the data given to the application */+
+private int[][] createData() {+
+ //return data;+
+ String rawData = jta.getText();+
+ StringTokenizer tokens = new StringTokenizer(rawData);+
+ List list = new LinkedList();+
+ while (tokens.hasMoreElements()){+
+ String number = "";+
+ String token = tokens.nextToken();+
+ for (int i=0; i<token.length(); i++){+
+ if (Character.isDigit(token.charAt(i))){+
+ number += token.substring(i, i+1);+
+ }+
+ } +
+ }+
+ int [][]data = new int[list.size()/2][2];+
+ int index = -2;+
+ for (int i=0; i<data.length;i++){+
+ index += 2;+
+ data[0] = Integer.parseInt(+
+ (list.get(index).toString()));+
+ data[i][1] = Integer.parseInt(+
+ (list.get(index +1).toString()));+
+ }+
+ return data;+
The follwing is the coding for drawing the graph?
+public void showGrph(int[][] data) {+
this.data = data;
repaint();
+} +
+/** Paint the graph */+
+protected void paintComponent(Graphics g) {+
+//if (data == null)+
+ //return; // No display if data is null+
super.paintComponent(g);
+// x is the start position for the first point+
int x = 30;
int y = 30;
for (int i = 0; i < data.length; i+) {+
+g.drawLine(data[i][0],data[i][1],data[i+1][0],data[i+1][1]);+
+}+
+}+Thanks for that tip!
package LineGraph;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.List;
public class GUI extends JFrame
implements ActionListener {
private JTextArea Filejta;
private JTextArea jta;
private JButton jbtShowGrph = new JButton("Show Chromatogram");
public JButton jbtExit = new JButton("Exit");
public JButton jbtGetFile = new JButton("Search File");
private Grph grph = new Grph();
private JFrame grphFrame = new JFrame(); // Create a new frame to hold the Graph panel
public GUI() {
JScrollPane pane = new JScrollPane(Filejta = new JTextArea("Default file location: - "));
pane.setPreferredSize(new Dimension(350, 20));
Filejta.setWrapStyleWord(true);
Filejta.setLineWrap(true);
// Store text area in a scroll pane
JScrollPane scrollPane = new JScrollPane(jta = new JTextArea("\n\n Type in file location and name and press 'Search File' button: - "
+ "\n\n\n Data contained in the file will be diplayed in this Scrollpane "));
scrollPane.setPreferredSize(new Dimension(425, 300));
jta.setWrapStyleWord(true);
jta.setLineWrap(true);
// Place scroll pane and button in the frame
JPanel jpButtons = new JPanel();
jpButtons.setLayout(new FlowLayout());
jpButtons.add(jbtShowGrph);
jpButtons.add(jbtExit);
JPanel searchFile = new JPanel();
searchFile.setLayout(new FlowLayout());
searchFile.add(pane);
searchFile.add(jbtGetFile);
add (searchFile, BorderLayout.NORTH);
add(scrollPane, BorderLayout.CENTER);
add(jpButtons, BorderLayout.SOUTH);
// Exit Program
jbtExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
// Read Files data contents
jbtGetFile.addActionListener(new ActionListener(){
public void actionPerformed( ActionEvent e) {
String FileLoc = Filejta.getText();
LocateFile clientsFile;
clientsFile = new LocateFile(FileLoc);
if (FileLoc != null){
String filePath = clientsFile.getFilePath();
String filename = clientsFile.getFilename();
String DocumentType = clientsFile.getDocumentType();
public String getFilecontents(){
String fileString = "\t\tThe file contains the following data:";
return fileString;
// Register listener // Create a new frame to hold the Graph panel
jbtShowGrph.addActionListener(this);
grphFrame.add(grph);
grphFrame.pack();
grphFrame.setTitle("Chromatogram showing data contained in file \\filename");
/** Handle the button action */
public void actionPerformed(ActionEvent e) {
// Takes data and provides program with CoOrdinates
int[][]data = createData();
// Set the data data to graph for display
grph.showGrph(data);
// Show the frame
grphFrame.setVisible(true);
/** set the data given to the application */
private int[][] createData() {
String rawData = jta.getText();
StringTokenizer tokens = new StringTokenizer(rawData);
List list = new LinkedList();
while (tokens.hasMoreElements()){
String number = "";
String token = tokens.nextToken();
for (int i=0; i<token.length(); i++){
if (Character.isDigit(token.charAt(i))){
number += token.substring(i, i+1);
int [][]data = new int[list.size()/2][2];
int index = -2;
for (int i=0; i<data.length;i++){
index += 2;
data[0] = Integer.parseInt(
(list.get(index).toString()));
data[i][1] = Integer.parseInt(
(list.get(index +1).toString()));
return data;
public static void main(String[] args) {
GUI frame = new GUI();
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Clients Data Retrival GUI");
frame.pack();
frame.setVisible(true);
package LineGraph;
import javax.swing.*;
import java.awt.*;
public class Grph extends JPanel {
private int[][] data;
/** Set the data and display Graph */
public void showGrph(int[][] data) {
this.data = data;
repaint();
/** Paint the graph */
protected void paintComponent(Graphics g) {
//if (data == null)
//return; // No display if data is null
super.paintComponent(g);
//Find the panel size and bar width and interval dynamically
int width = getWidth();
int height = getHeight();
//int intervalw = (width - 40) / data.length;
//int intervalh = (height - 20) / data.length;
//int individualWidth = (int)(((width - 40) / 24) * 0.60);
////int individualHeight = (int)(((height - 40) / 24) * 0.60);
// Find the maximum data. The maximum data
//int maxdata = 0;
//for (int i = 0; i < data.length; i++) {
//if (maxdata < data[i][0])
//maxdata = data[i][1];
// x is the start position for the first point
int x = 30;
int y = 30;
//draw a vertical axis
g.drawLine(20, height - 45, 20, (height)* -1);
// Draw a horizontal base line4
g.drawLine(20, height - 45, width - 20, height - 45);
for (int i = 0; i < data.length; i++) {
//int Value = i;
// Display a line
//g.drawLine(x, height - 45 - Value, individualWidth, height - 45);
g.drawLine(data[i][0],data[i][1],data[i+1][0],data[i+1][1]);
// Display a number under the x axis
g.drawString((int)(0 + i) + "", (x), height - 30);
// Display a number beside the y axis
g.drawString((int)(0 + i) + "", width - 1277, (y) + 900);
// Move x for displaying the next character
//x += (intervalw);
//y -= (intervalh);
/** Override getPreferredSize */
public Dimension getPreferredSize() {
return new Dimension(1200, 900); -
can anyone out there help me with this assignment ????? i`ll attach the file to this topic
In this assignment, you are to write a Java applet, using arrays, to simulate the functions of a drinks-vending machine.
The assignment requirements described below are broken down into 2 stages of development, described in this document
as 'Basic Requirements' and 'Additional Features'. You are advised to do your programming progressively in these
stages. An Activity Plan has also been specified for you to follow. Refer to the 'Grading Criteria' on page 5 to have
an idea of how the different components are graded.
1. 1. BACKGROUND
A company intends to build computerised drinks-vending machines to enlarge its business portfolio. You have been tasked to develop a
Java applet that simulates the operation of such a machine to determine if it will meet their needs.
2. 1. BASIC REQUIREMENTS
The machine should have a wide range of drinks available. A customer can choose a drink according to the following criteria:
a) a) Category of Drinks
� � Beverages
� � Soft Drinks
(For beverages, there is choice of whether sugar and/or creamer is required, for which there is an additional charge.)
b) b) Type of Beverages
� � Hot
� � Cold
Once a customer has specified the drink he wants, the amount payable is displayed. The unit prices to be displayed are as follows:
Drinks Price per Cup/Packet ($)
Beverage: Coffee 1.00
Tea 1.20
Milo 1.40
Horlicks 1.35
Chrysanthemum 1.00
Ginger 0.80
Soft Drinks: Apple 1.40
Orange 1.40
Pineapple 1.50
Carrot 2.00
Longan 1.20
Bandung 1.00
(For beverages, a request for sugar or creamer attracts an additional charge of $0.10 each. Creamer is not applicable for
chrysanthemum and ginger.)
The customer may then confirm his order by entering the amount payable (this symbolises his payment for the drink). Whenever the
payment input is not correct, an appropriate error message is displayed, whereupon the customer has to re-enter the amount again.
When the correct amount is paid, the required drink is dispensed.
For any drink that is out of stock, a message is shown, stating that it is not available. Each time a drink is dispensed, the stock for that
drink is updated (For beverages, the stock is stored in units of servings for each cup.) To simplify the testing, you may start the simulation
by setting the stock for each drink to 10 packets or cup-servings.
3. 2. ADDITIONAL FEATURES
In addition, the simulator can have the following features:
a) a) Smart Graphical User-Interface (GUI)
You may build upon the basic requirements by recommending alternative drinks of the same category, whenever a requested
drink is not available (as signified from the stock). In this case, only drinks which are available (i.e., in sufficient stock) are
displayed for the customer to choose. And if only soft drinks are available, the selections for creamer and sugar should be disabled.
b) b) Multiple Orders
A customer could order more than one drink. The system could allow him to specify as many drinks as he wants, prompting him
for an appropriate payment, and then dispensing the drinks accordingly, subject to availability. This may also entail the extension
of the graphical user-interface.
c) c) Sales Analysis
Periodically, the total revenue accumulated since the last collection is printed in descending order of sales for each drink sold,
together with a grand total. The cash is then cleared from the machine. This feature requires password-protection.
d) d) Replenishment of Stock
Periodically, the stock is checked to determine how much of each drink needs to be replenished. For this purpose, a list of the
drinks with the corresponding quantity on hand is printed in ascending order of stock level. Drinks with insufficient stock are
topped up to a level of 10 servings or packets. This feature also requires password-protection.
e) e) Any other relevant features
You are limited only by your creativity. You can add any other relevant features for this project. Please consult your tutor before
you proceed.
To qualify for the full marks for this section, you need to implement 2 features, at least one of which must be either (a) or (b) above.
4. 3. ACTIVITY PLAN
Suggestions for Getting Started
There are many ways that you could complete this assignment. The most important part is to think about the entire project first so that
it is easy to integrate the various pieces. You should also consider what type of graphics you want to incorporate.
a) a) Analysis
1. Understand the program specification and the requirements before attempting the project.
b) b) Program Design
2. Work out the GUI components (e.g., TextFields, CheckBoxes, ChoiceBoxes, Buttons, etc.) needed to get the user input.
3. 3. Work out the main logic of the program using modular programming techniques; i.e. use methods appropriately. E.g., tasks that perform
4. 4. a well-defined function or those that are repeated should be coded as methods. For example, you can write the methods, displayBill(),
5. 5. makePayment(), computeTotal(), dispenseDrink(), etc. You need to think carefully about the return type and the parameters of each
6. 6. method.
7. 7. You are required to use arrays appropriately for this assignment. Marks will be deducted for inefficient use or non-usage of arrays.
c) Implementation & Testing
8. 8. Write the method definition of each method ONE at a time.
9. 9. Test your program logic to make sure that it works. In the interim, you can use �g.drawString(�);� or �System.out.println(�);� to print
10. 10. out intermediate results so that you can see whether your program is working correctly. You may not want to bother about error-checking
11. 11. at this point. You should test each method as soon as it is written, as it is much easier to debug your program in this way.
5. 4. DELIVERABLES
By Monday, 25th February before 5:00 p.m., hand in the following to the School of ICT Administrative Office at Block 31, level 8:
� � A copy of the printout of your .java file.
� � A diskette labelled with your name, group, student ID. The diskette should contain ALL the necessary files (.java, .html, and .class)
to run your applet.
� � The above in an envelope topped with the Assignment Completion Report (see pages 6, 7 & 8). Page 6 is for you to paste on top
of your envelope whilst pages 7 and 8 are for you to document your Test Plan, and write your comments (including any
special instructions to run your program) - to be inserted into the envelope.
In your .java program, you are to include a blocked comment at the top stating:
q q Your name, group, student ID.
q q Assumptions (if any) or any deviations from the specified requirements.
q q Any features that you would like to highlight.
6. 5. WALK-THROUGH OF PROGRAM
Monday 25th February at 9:30 a.m. SHARP
In the walk-through, you will be asked to give short, written answers to some questions about your program. These questions will assess
your basic understanding of the code that you are handing in. If you fail to display adequate understanding of your own program, you can
be down-graded by up to two letter grades from what you would have normally received. It is also possible that you will be called to
perform a demonstration cum explanation of your work if it is suspected that you have copied someone else�s work. Lesson: do your own
work and you will have no problem!
7. 6. GRADING CRITERIA FOR PROGRAMMING
Correct and robust implementation of basic features 55 %
Additional features 20 %
Programming style:� � Program design� � Appropriate use of arrays� � Appropriate use of variables, methods, and parameters� � Proper usage of control structures (e.g. if/else, loops) 15 %
Good programming practice:� � Meaningful variable names � � Proper indentations� � Useful and neat comments 5 %
Adequate (black-box) testing:� � Suitably-designed test plan 5 %
Total: 100 %
PROBLEM SOLVING & PROGRAMMING II
(Dip IT/MMC/EI, Year 1, Semester 2)
Assignment Completion Report (to be attached to cover of envelope)
Name: ___________________________________ Group: ________
ID: ___________________ Date & Time submitted: ____________
Requirements % Done (0-100) Remarks
BASIC FEATURES
� � Can choose category (and select appropriate additives)
� � Can choose drink (with error checking)
� � Can display amount payable
� � Can indicate availability of drink (with error checking)
� � Can accept payment for drink (with error checking)
� � Can dispense drink
� � Can update stock
ADDITIONAL FEATURES
� � Smart GUI
� � Multiple Orders
� � Sales Analysis (with password checking)
� � Stock Replenishment(with password checking)
� � Any other relevant features
Test Plan
Using black-box testing, record your test specification and the results according to the following format (the examples here are provided
for your reference only):
Test No. Purpose Test Shot/Data Expected Result Actual Result
E.g. 1a) Check whether beverage can be selected Click on �Chrysanthe-mum� button Checkbox for �Sugar� but not �Creamer� appear �Sugar� and checkboxes appeared
E.g. 1b) Check whether chrysanthemum with sugar can be ordered Select sugar and click on �Order� button Amount payable appears as �$1.10� (i.e., $1.00 + $0.10) Amount payable shown as $1.10
E.g. 1c) Check whether correct payment can be accepted Enter �1.00� in �Payment� textfield Error message �Insufficient payment - $0.10 short� appears Confirmation message �Drink being dispensed� appeared � ERROR!
E.g. 1d) Re-test 1c), after amending program As above As above Error message �Insufficient payment - $0.10 short� appeared
etc.
etc.
Remember to hand in this test plan together with the other deliverables in the envelope.
Have you�
1. 1. Checked to make sure program still works properly even with windows resized?
2. 2. Tested your program thoroughly, as if you're trying to break it?
Any comments about this assignment? Any special instructions to run your program? Write it here.public class testing1 {
String gg;
public void testing3() {
System.out.print(gg); }
// this is are constructor for the object and method we are going to make
next code
class testing {
public static void main(String[] args) {
testing1 tes = new testing1();
tes.gg = "hello there";
tes.testing3(); //here we have made a object and a method
hope this helps -
Please help me with the following two questions, very urgent
Hi All,
Please help me with some scenerios about what are the common problems when modifying a standard script such a standard Invoice script and how can we overcome them.
What are the common problems encountered when working with SAP SMARTFORMS and how to overcome them?
Please help me with these questions, its very urgent.
Thanks in advance.
MD.hi
hope it will help you.
reward if ehlp.
How to create a New smartfrom, it is having step by step procedure
http://sap.niraj.tripod.com/id67.html
step by step good ex link is....
http://smoschid.tripod.com/How_to_do_things_in_SAP/How_To_Build_SMARTFORMS/How_To_Build_SMARTFORMS.html
Here is the procedure
1. Create a new smartforms
Transaction code SMARTFORMS
Create new smartforms call ZSMART
2. Define looping process for internal table
Pages and windows
First Page -> Header Window (Cursor at First Page then click Edit -> Node -> Create)
Here, you can specify your title and page numbering
&SFSY-PAGE& (Page 1) of &SFSY-FORMPAGES(Z4.0)& (Total Page)
Main windows -> TABLE -> DATA
In the Loop section, tick Internal table and fill in
ITAB1 (table in ABAP SMARTFORM calling function) INTO ITAB2
3. Define table in smartforms
Global settings :
Form interface
Variable name Type assignment Reference type
ITAB1 TYPE Table Structure
Global definitions
Variable name Type assignment Reference type
ITAB2 TYPE Table Structure
4. To display the data in the form
Make used of the Table Painter and declare the Line Type in Tabstrips Table
e.g. HD_GEN for printing header details,
IT_GEN for printing data details.
You have to specify the Line Type in your Text elements in the Tabstrips Output options.
Tick the New Line and specify the Line Type for outputting the data.
Declare your output fields in Text elements
Tabstrips - Output Options
For different fonts use this Style : IDWTCERTSTYLE
For Quantity or Amout you can used this variable &GS_ITAB-AMOUNT(12.2)&
5. Calling SMARTFORMS from your ABAP program
REPORT ZSMARTFORM.
Calling SMARTFORMS from your ABAP program.
Collecting all the table data in your program, and pass once to SMARTFORMS
SMARTFORMS
Declare your table type in :-
Global Settings -> Form Interface
Global Definintions -> Global Data
Main Window -> Table -> DATA
Written by : SAP Hints and Tips on Configuration and ABAP/4 Programming
http://sapr3.tripod.com
TABLES: MKPF.
DATA: FM_NAME TYPE RS38L_FNAM.
DATA: BEGIN OF INT_MKPF OCCURS 0.
INCLUDE STRUCTURE MKPF.
DATA: END OF INT_MKPF.
SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.
SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.
MOVE-CORRESPONDING MKPF TO INT_MKPF.
APPEND INT_MKPF.
ENDSELECT.
At the end of your program.
Passing data to SMARTFORMS
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZSMARTFORM'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
if sy-subrc <> 0.
WRITE: / 'ERROR 1'.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
call function FM_NAME
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
GS_MKPF = INT_MKPF
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
Smartform
you can check this link here you can see the steps and you can do it the same by looking at it..
http://smoschid.tripod.com/How_to_do_things_in_SAP/How_To_Build_SMARTFORMS/How_To_Build_SMARTFORMS.html
SMARTFORMS STEPS.
1. In Tcode se11 Create a structure(struct) same like the Internal table that you are going to use in your report.
2. Create Table type(t_struct) of stracture in se11.
3. In your program declare Internal table(Itab) type table of structure(struct).
4. Define work area(wa) like line of internal table.
5. Open Tcode Smartforms
6. In form Global setting , forminterface Import parameter define Internal table(Itab) like table type of stracture(t_struct).
7. In form Global setting , Global definitions , in Global data define Work area(wa) like type stracture(struct).
8. In form pages and window, create Page node by default Page1 is available.
9. In page node you can create numbers of secondary window. But in form there is only one Main window.
10. By right click on page you can create windows or Go to Edit, Node, Create.
11. After creating the window right click on window create table for displaying the data that you are passing through internal table.
12. In the table Data parameter, loop internal internal table (Itab) into work area(wa).
13. In table there are three areas Header, Main Area, Footer.
14. Right click on the Main area create table line by default line type1 is there select it.
15. Divide line into cells according to your need then for each cell create Text node.
16. In text node general attribute. Write down fields of your work area(wa) or write any thing you want to display.
17. Save form and activate it.
18. Then go to Environment, function module name, there you get the name of function module copy it.
19. In your program call the function module that you have copied from your form.
20. In your program in exporting parameter of function pass the internal table(itab).
SAP Smart Forms is introduced in SAP Basis Release 4.6C as the tool for creating and maintaining forms.
SAP Smart Forms allow you to execute simple modifications to the form and in the form logic by using simple graphical tools; in 90% of all cases, this won't include any programming effort. Thus, a power user without any programming knowledge can
configure forms with data from an SAP System for the relevant business processes.
To print a form, you need a program for data retrieval and a Smart Form that contains the entire from logic. As data retrieval and form logic are separated, you must only adapt the Smart Form if changes to the form logic are necessary. The application program passes the data via a function module interface to the Smart Form. When activating the Smart Form, the system automatically generates a function module. At runtime, the system processes this function module.
You can insert static and dynamic tables. This includes line feeds in individual table cells, triggering events for table headings and subtotals, and sorting data before output.
You can check individual nodes as well as the entire form and find any existing errors in the tree structure. The data flow analysis checks whether all fields (variables) have a defined value at the moment they are displayed.
SAP Smart Forms allow you to include graphics, which you can display either as part of the form or as background graphics. You use background graphics to copy the layout of an existing (scanned) form or to lend forms a company-specific look. During printout, you can suppress the background graphic, if desired.
SAP Smart Forms also support postage optimizing.
Also read SAP Note No. 168368 - Smart Forms: New form tool in Release 4.6C
What Transaction to start SAP Smart Forms?
Execute transaction SMARTFORMS to start SAP Smart Forms.
Key Benefits of SAP Smart Forms:
SAP Smart Forms allows you to reduce considerably the implementation costs of mySAP.com solutions since forms can be adjusted in minimum time.
You design a form using the graphical Form Painter and the graphical Table Painter. The form logic is represented by a hierarchy structure (tree structure) that consists of individual nodes, such as nodes for global settings, nodes for texts, nodes for output tables, or nodes for graphics.
To make changes, use Drag & Drop, Copy & Paste, and select different attributes.
These actions do not include writing of coding lines or using a Script language.
Using your form description maintained in the Form Builder, Smart Forms generates a function module that encapsulates layout, content and form logic. So you do not need a group of function modules to print a form, but only one.
For Web publishing, the system provides a generated XML output of the processed form.
Smart Forms provides a data stream called XML for Smart Forms (XSF) to allow the use of 3rd party printing tools. XSF passes form content from R/3 to an external product without passing any layout information about the Smart Form.
SmartForms System Fields
Within a form you can use the field string SFSY with its system fields. During form processing the system replaces these fields with the corresponding values. The field values come from the SAP System or are results of the processing.
System fields of Smart Forms
&SFSY-DATE&
Displays the date. You determine the display format in the user master record.
&SFSY-TIME&
Displays the time of day in the form HH:MM:SS.
&SFSY-PAGE&
Inserts the number of the current print page into the text. You determine the format of the page number (for example, Arabic, numeric) in the page node.
&SFSY-FORMPAGES&
Displays the total number of pages for the currently processed form. This allows you to include texts such as'Page x of y' into your output.
&SFSY-JOBPAGES&
Contains the total page number of all forms in the currently processed print request.
&SFSY-WINDOWNAME&
Contains the name of the current window (string in the Window field)
&SFSY-PAGENAME&
Contains the name of the current page (string in the Page field)
&SFSY-PAGEBREAK&
Is set to 'X' after a page break (either automatic [Page 7] or command-controlled [Page 46])
&SFSY-MAINEND&
Is set as soon as processing of the main window on the current page ends
&SFSY-EXCEPTION&
Contains the name of the raised exception. You must trigger your own exceptions, which you defined in the form interface, using the user_exception macro (syntax: user_exception <exception name >).
Example Forms Available in Standard SAP R/3
SF_EXAMPLE_01
Simple example; invoice with table output of flight booking for one customer
SF_EXAMPLE_02
Similar to SF_EXAMPLE_01 but with subtotals
SF_EXAMPLE_03
Similar to SF_EXAMPLE_02, whereby several customers are selected in the application program; the form is called for each customer and all form outputs are included in an output request
Advantages of SAP Smart Forms
SAP Smart Forms have the following advantages:
1. The adaption of forms is supported to a large extent by graphic tools for layout and logic, so that no programming knowledge is necessary (at least 90% of all adjustments). Therefore, power user forms can also make configurations for your business processes with data from an SAP system. Consultants are only required in special cases.
2. Displaying table structures (dynamic framing of texts)
3. Output of background graphics, for form design in particular the use of templates which were scanned.
4. Colored output of texts
5. User-friendly and integrated Form Painter for the graphical design of forms
6. Graphical Table Painter for drawing tables
7. Reusing Font and paragraph formats in forms (Smart Styles)
8. Data interface in XML format (XML for Smart Forms, in short XSF)
9. Form translation is supported by standard translation tools
10. Flexible reuse of text modules
11. HTML output of forms (Basis release 6.10)
12. Interactive Web forms with input fields, pushbuttons, radio buttons, etc. (Basis-Release 6.10) -
I will pay for who can help me with this applet
Hi!, sorry for my english, im spanish.
I have a big problem with an applet:
I�ve make an applet that sends files to a FTP Server with a progress bar.
Its works fine on my IDE (JBuilder 9), but when I load into Internet Explorer (signed applet) it crash. The applet seems like blocked: it show the screen of java loading and dont show the progress bar, but it send the archives to the FTP server while shows the java loading screen.
I will pay with a domain or with paypal to anyone who can help me with this problematic applet. I will give my code and the goal is only repair the applet. Only that.
My email: [email protected]
thanks in advance.
adios!thaks for yours anwswers..
harmmeijer: the applet is signed ok, I dont think that is the problem...
itchyscratchy: the server calls are made from start() method. The applet is crashed during its sending files to FTP server, when finish, the applet look ok.
The class I use is FtpBean: http://www.geocities.com/SiliconValley/Code/9129/javabean/ftpbean/
(I test too with apache commons-net, and the same effect...)
The ftp is Filezilla in localhost.
This is the code, I explain a little:
The start() method calls iniciar() method where its is defined the array of files to upload, and connect to ftp server. The for loop on every element of array and uploads a file on subirFichero() method.
Basicaly its this.
The HTML code is:
<applet
codebase = "."
code = "revelado.Upload.class"
archive = "revelado.jar"
name = "Revelado"
width = "750"
height = "415"
hspace = "0"
vspace = "0"
align = "middle"
>
<PARAM NAME="usern" VALUE="username">
</applet>
package revelado;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.io.*;
import javax.swing.border.*;
import java.net.*;
import ftp.*;
public class Upload
extends Applet {
private boolean isStandalone = false;
JPanel jPanel1 = new JPanel();
JLabel jLabel1 = new JLabel();
JLabel jlmensaje = new JLabel();
JLabel jlarchivo = new JLabel();
TitledBorder titledBorder1;
TitledBorder titledBorder2;
//mis variables
String DIRECTORIOHOME = System.getProperty("user.home");
String[] fotos_sel = new String[1000]; //array of selected images
int[] indice_tamano = new int[1000]; //array of sizes
int[] indice_cantidad = new int[1000]; //array of quantitys
int num_fotos_sel = 0; //number of selected images
double importe = 0; //total prize
double[] precios_tam = {
0.12, 0.39, 0.60, 1.50};
//prizes
String server = "localhost";
String username = "pepe";
String password = "pepe01";
String nombreusuario = null;
JProgressBar jProgreso = new JProgressBar();
//Obtener el valor de un par�metro
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
//Construir el applet
public Upload() {
//Inicializar el applet
public void init() {
try {
jbInit();
catch (Exception e) {
e.printStackTrace();
//Inicializaci�n de componentes
private void jbInit() throws Exception {
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
this.setLayout(null);
jPanel1.setBackground(Color.lightGray);
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(new Rectangle(113, 70, 541, 151));
jPanel1.setLayout(null);
jLabel1.setFont(new java.awt.Font("Dialog", 1, 16));
jLabel1.setText("Subiendo archivos al servidor");
jLabel1.setBounds(new Rectangle(150, 26, 242, 15));
jlmensaje.setFont(new java.awt.Font("Dialog", 0, 10));
jlmensaje.setForeground(Color.red);
jlmensaje.setHorizontalAlignment(SwingConstants.CENTER);
jlmensaje.setText(
"Por favor, no cierre esta ventana hasta que termine de subir todas " +
"las fotos");
jlmensaje.setBounds(new Rectangle(59, 49, 422, 30));
jlarchivo.setBackground(Color.white);
jlarchivo.setBorder(titledBorder2);
jlarchivo.setHorizontalAlignment(SwingConstants.CENTER);
jlarchivo.setBounds(new Rectangle(16, 85, 508, 24));
jProgreso.setForeground(new Color(49, 226, 197));
jProgreso.setBounds(new Rectangle(130, 121, 281, 18));
jPanel1.add(jlmensaje, null);
jPanel1.add(jlarchivo, null);
jPanel1.add(jProgreso, null);
jPanel1.add(jLabel1, null);
this.add(jPanel1, null);
nombreusuario = getParameter("usern");
//Iniciar el applet
public void start() {
jlarchivo.setText("Start() method...");
iniciar();
public void iniciar() {
//init images selected array
fotos_sel[0] = "C:/fotos/05160009.JPG";
fotos_sel[1] = "C:/fotos/05160010.JPG";
fotos_sel[2] = "C:/fotos/05160011.JPG";
// etc...
num_fotos_sel=3; //number of selected images
//conectar al ftp (instanciar clase FtpExample)
FtpExample miftp = new FtpExample();
miftp.connect();
//make the directory
subirpedido(miftp);
jProgreso.setMinimum(0);
jProgreso.setMaximum(num_fotos_sel);
for (int i = 0; i < num_fotos_sel; i++) {
jlarchivo.setText(fotos_sel);
jProgreso.setValue(i);
subirFichero(miftp, fotos_sel[i]);
try {
Thread.sleep(1000);
catch (InterruptedException ex) {
//salida(ex.toString());
jlarchivo.setText("Proceso finalizado correctamente");
jProgreso.setValue(num_fotos_sel);
miftp.close();
//Detener el applet
public void stop() {
//Destruir el applet
public void destroy() {
//Obtener informaci�n del applet
public String getAppletInfo() {
return "Subir ficheros al server";
//Obtener informaci�n del par�metro
public String[][] getParameterInfo() {
return null;
//sube al ftp (a la carpeta del usuario) el archivo
//pedido.txt que tiene las lineas del pedido
public void subirpedido(FtpExample miftp) {
jlarchivo.setText("Iniciando la conexi�n...");
//make folder of user
miftp.directorio("www/usuarios/" + nombreusuario);
//uploads a file
public void subirFichero(FtpExample miftp, String nombre) {
//remote name:
String nremoto = "";
int lr = nombre.lastIndexOf("\\");
if (lr<0){
lr = nombre.lastIndexOf("/");
nremoto = nombre.substring(lr + 1);
String archivoremoto = "www/usuarios/" + nombreusuario + "/" + nremoto;
//upload file
miftp.subir(nombre, archivoremoto);
class FtpExample
implements FtpObserver {
FtpBean ftp;
long num_of_bytes = 0;
public FtpExample() {
// Create a new FtpBean object.
ftp = new FtpBean();
// Connect to a ftp server.
public void connect() {
try {
ftp.ftpConnect("localhost", "pepe", "pepe01");
catch (Exception e) {
System.out.println(e);
// Close connection
public void close() {
try {
ftp.close();
catch (Exception e) {
System.out.println(e);
// Go to directory pub and list its content.
public void listDirectory() {
FtpListResult ftplrs = null;
try {
// Go to directory
ftp.setDirectory("/");
// Get its directory content.
ftplrs = ftp.getDirectoryContent();
catch (Exception e) {
System.out.println(e);
// Print out the type and file name of each row.
while (ftplrs.next()) {
int type = ftplrs.getType();
if (type == FtpListResult.DIRECTORY) {
System.out.print("DIR\t");
else if (type == FtpListResult.FILE) {
System.out.print("FILE\t");
else if (type == FtpListResult.LINK) {
System.out.print("LINK\t");
else if (type == FtpListResult.OTHERS) {
System.out.print("OTHER\t");
System.out.println(ftplrs.getName());
// Implemented for FtpObserver interface.
// To monitor download progress.
public void byteRead(int bytes) {
num_of_bytes += bytes;
System.out.println(num_of_bytes + " of bytes read already.");
// Needed to implements by FtpObserver interface.
public void byteWrite(int bytes) {
//crea un directorio
public void directorio(String nombre) {
try {
ftp.makeDirectory(nombre);
catch (Exception e) {
System.out.println(e);
public void subir(String local, String remoto) {
try {
ftp.putBinaryFile(local, remoto);
catch (Exception e) {
System.out.println(e);
// Main
public static void main(String[] args) {
FtpExample example = new FtpExample();
example.connect();
example.directorio("raul");
example.listDirectory();
example.subir("C:/fotos/05160009.JPG", "/raul/foto1.jpg");
//example.getFile();
example.close(); -
Pls help me with this program - urgent
Hi,
I am new to Java. First time to do the program. Stuck here.
The description of the program:
Implement a complex number (numbers of the form a+ib, where i2 = -1, i2 is i raised to power 2 ). Recall that a complex number consists of a real part (a) and an imaginary part (b). Provide a reasonable set of constructors; the methods add, subtract, multiply and divide; as well as toString and equals.
You are to implement a complex number as having two fields, one for the real part another for the imaginary part.
If z = a + ib and x = c + id are two complex numbers, then their sum z+ x = (a+c) + i(b+d), quotient z/x = (ac+bd)/(c*c+d*d) + i(-ab+bc)/(c*c + d*d). two complex numbers are equal if their real and imaginary parts are equal.
I really do not have any clues about imaginary parts and how to do it.
Could you please help me with that.
Thanks a lot.ur dboubt has nothing to do java.. its a mathematical concept..
as the question says the complexnumbers can be represented in the form of a+ib where i=squre-root of -1 .. and as this is imaginary (ie u cant get a minus number by squring a number) the second part is called imaginay.
so as a programmer u dont have to give more strain on this but to declare a class having to instance varaiables and inplememts the methods as said.
and in the toString() method u can return the numbers in the reuired format like
return ( a + "+i" +b); -
Little help please with forwarding traffic to proxy server!
hi all, little help please with this error message
i got this when i ran my code and requested only the home page of the google at my client side !!
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language: en-us
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727)
Host: www.google.com
Connection: Keep-Alive
Cookie: PREF=ID=a21457942a93fc67:TB=2:TM=1212883502:LM=1213187620:GM=1:S=H1BYeDQt9622ONKF
HTTP/1.0 200 OK
Cache-Control: private, max-age=0
Date: Fri, 20 Jun 2008 22:43:15 GMT
Expires: -1
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Server: gws
Content-Length: 2649
X-Cache: MISS from linux-e6p8
X-Cache-Lookup: MISS from linux-e6p8:3128
Via: 1.0
Connection: keep-alive
GET /8SE/11?MI=32d919696b43409cb90ec369fe7aab75&LV=3.1.0.146&AG=T14050&IS=0000&TE=1&TV=tmen-us%7Cts20080620224324%7Crf0%7Csq38%7Cwi133526%7Ceuhttp%3A%2F%2Fwww.google.com%2F HTTP/1.1
User-Agent: MSN_SL/3.1 Microsoft-Windows/5.1
Host: g.ceipmsn.com
HTTP/1.0 403 Forbidden
Server: squid/2.6.STABLE5
Date: Sat, 21 Jun 2008 01:46:26 GMT
Content-Type: text/html
Content-Length: 1066
Expires: Sat, 21 Jun 2008 01:46:26 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from linux-e6p8
X-Cache-Lookup: NONE from linux-e6p8:3128
Via: 1.0
Connection: close
java.net.SocketException: Broken pipe // this is the error message
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:115)
at java.io.DataOutputStream.writeBytes(DataOutputStream.java:259)
at SimpleHttpHandler.run(Test77.java:61)
at java.lang.Thread.run(Thread.java:595)
at Test77.main(Test77.java:13)please could just tell me what is wrong with my code ! this is the last idea in my G.p and am havin difficulties with that cuz this is the first time dealin with java :( the purpose of my code to forward the http traffic from client to Squid server ( proxy server ) then forward the response from squid server to the clients !
thanx a lot,
this is my code :
import java.io.*;
import java.net.*;
public class Test7 {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(1416);
while(true){
System.out.println("Waiting for request");
Socket socket = serverSocket.accept();
new Thread(new SimpleHttpHandler(socket)).run();
socket.close();
catch (Exception e) {
e.printStackTrace();
class SimpleHttpHandler implements Runnable{
private final static String CLRF = "\r\n";
private Socket client;
private DataOutputStream writer;
private DataOutputStream writer2;
private BufferedReader reader;
private BufferedReader reader2;
public SimpleHttpHandler(Socket client){
this.client = client;
public void run(){
try{
this.reader = new BufferedReader(
new InputStreamReader(
this.client.getInputStream()
InetAddress ipp=InetAddress.getByName("192.168.6.29"); \\ my squid server
System.out.println(ipp);
StringBuffer buffer = new StringBuffer();
Socket ss=new Socket(ipp,3128);
this.writer= new DataOutputStream(ss.getOutputStream());
writer.writeBytes(this.read());
this.reader2 = new BufferedReader(
new InputStreamReader(
ss.getInputStream()
this.writer2= new DataOutputStream(this.client.getOutputStream());
writer2.writeBytes(this.read2());
this.writer2.close();
this.writer.close();
this.reader.close();
this.reader2.close();
this.client.close();
catch(Exception e){
e.printStackTrace();
private String read() throws IOException{
String in = "";
StringBuffer buffer = new StringBuffer();
while(!(in = this.reader.readLine()).trim().equals("")){
buffer.append(in + "\n");
buffer.append(in + "\n");
System.out.println(buffer.toString());
return buffer.toString();
private String read2() throws IOException{
String in = "";
StringBuffer buffer = new StringBuffer();
while(!(in = this.reader2.readLine()).trim().equals("")){
buffer.append(in + "\n");
System.out.println(buffer.toString());
return buffer.toString();
Edited by: Tareq85 on Jun 20, 2008 5:22 PM -
Help needed with singleSelection and multiple selection in table.
Hi ,
How do i implement the singleSelection and multipleSelection on table rows.
How do i capture the checked rows?
How should the code be written and where should it be written.
I should be capturing the values of the checked rows and pass it to the pl/sql package.
I have a table - in -table so there is a singleselection on the outer table and multiple selection on the Inner table.
Could anyone help me with this.
Thanks,One solution to most of your questions : Read the advanced table section of Dev guide.
Always go through the dev guide before putting up the issue. Let the forum be for those scenarios which dev guide doesn't covers in much detail.
--Shiv -
Please help me with this automotive storage scenario
HI,
Please help me with the way of implementing this scenario business scenario,
The scenario is a car agency which works on importing cars from EUROPE[ITALY, FRANCE, GERMANY] and its main location in EGYPT and have three branches[CAIRO, ALEX and ASWAN].
THE imported cars are first shipped to alex through ships from EUROPE then usually stored in the company stores in ALEX from 5 to 30 days until they are moved to either CAIRO or ASWAN to be sold there.
I want to implement the shipping of all the cars coming from EUROPE to be stored in PLANT ALEX for 5 to 30 days, as i have three types of Purchase Orders 1- Foreign PO (for buying from europe), 2- Local PO (for buying locally from egypt), 3- Service PO (for asking for any service).
Hint: I tried to make a default and displayed plant Alex in the PO but it is not the solution i have a local PO which have a default material group BMW.
Please help...HI nour el din
There will be 2 possible scenarios,
1. If you consider Alex as plant,
Against the "Foreign PO" receive the material at the Plant Alex ,Keep the stock as many days required there,Then subsequently Create the STO to move the stock to other plants for the storage .
2.If you consider Alex as storage.
Receive the material at Alex storage location & Later do Sloc to Sloc ttransfer posting.
Regards
Mascot. -
Please help me with these java puzzle ?
Dear all,
My friend send me typical java puzzle about java.util.ArrayList
which is getting messy. Please help me out. It's not a homework.
Please help me with these java puzzle ?
Dear all,
My friend send me typical java puzzle about java.util.ArrayList
which is getting messy. Please help me out. It's not a homework.
import java.util.*;
public class MyInt ______ ________ {
public static void main(String[] args) {
ArrayList<MyInt> list = new ArrayList<MyInt>();
list.add(new MyInt(2));
list.add(new MyInt(1));
Collections.sort(list);
System.out.println(list);
private int i;
public MyInt(int i) { this.i = i; }
public String toString() { return Integer.toString(i); }
________ int ___________ {
MyInt i2 = (MyInt)o;
return ________;
}Hints , fill the underlines with below :
implements
extends
Sortable
Object
Comparable
protected
public
i = i2.i
i
i2.i=i
compare(MyInt o, MyInt i2)
compare(Object o, Object i2)
sort(Object o) sort(MyInt o)
compareTo(MyInt o)
compareTo(Object o)Dear all,
My friend send me typical java puzzle aboutNotwithstanding your pathetic protestations typicial
of all your posts this is NOT a typical java "puzzle"
but is indeed a typical homework puzzle.
And it's damn easy if you spent 30 minutes with a
tutorial.
DO YOUR OWN HOMEWORK!
Hey i did it.
import java.util.*;
public class MyInt implements Comparable {
public static void main(String[] args) {
ArrayList<MyInt> list = new ArrayList<MyInt>();
list.add(new MyInt(2));
list.add(new MyInt(1));
Collections.sort(list);
System.out.println(list);
private int i;
public MyInt(int i) { this.i = i; }
public String toString() { return Integer.toString(i); }
public int compareTo(Object o){
MyInt i2 = (MyInt)o;
return i;
}E:\>javac MyInt.java
Note: MyInt.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
E:\>java MyInt
[1, 2] -
Plz help me with Upgradation Tools
hi Gurus,
Can u help me with any upgradation tools..
Regards
SahilHi Sahil,
Upgrade Projects can follow one of the 2 possibility.
1. Technical Upgrade: in which the basis consultant will handle the same & transport the configurations & developments from 5.0 to 6.0. Subsequent to which functional consultant & ABAP er will do the necessary change in configuration or further configuration & ABAP ers will do necessary developments required.
2. Traditional ASAP mythology: which would refer as new implementation as a whole.
STEPS IN TECHNICAL UPGRADE
Basis Team will do the prepare activities. (UNIX, BASIS, DBA).
The client has modified Developer need to run the Transaction SPDD, which provides the details of SAP Standard Dictionary, objects that. Users need to take a decision to keep the changes or revert back to the SAP Standard Structure. More often decision is to keep the change. This is mandatory activity in upgrade and avoids data loses in new system.
After completing SPDD transaction, we need to run SPAU Transaction to get the list of Standard SAP programs that have been modified. This activity can be done in phases even after the upgrade. Generally this will be done in same go so that your testing results are consistent and have more confident in upgrade.
Run SPUMG Transaction for Unicode Conversion in non-Unicode system. SPUM4 in 4.6c.
Then we need to move Z/Y Objects. Need to do Extended programming check, SQL trace, Unit testing, Integration testing, Final testing, Regression Testing, Acceptance Testing etc.,
The main Category of Objects that needs to be Upgraded is
Includes
Function Groups / Function Modules
Programs / Reports
OSS Notes
SAP Repository Objects
SAP Data Dictionary Objects
Domains, Data Elements
Tables, Structures and Views
Module Pools, Sub Routine pools
BDC Programs
Print Programs
SAP Scripts, Screens
User Exits
You can find the difference in release notes of each SAP version.
Here are the links.
http://help.sap.com/saphelp_47x200/helpdata/en/fc/e3003deddfae4de10000000a114084/frameset.htm
http://help.sap.com/saphelp_scm50/helpdata/en/28/b34c40cc538437e10000000a155106/frameset.htm
http://help.sap.com/saphelp_erp2005/helpdata/en/43/68805bb88f297ee10000000a422035/frameset.htm
Reward if helpful.
Regards,
Harini.S
Maybe you are looking for
-
Using HR_infotype_operations , locking problem
hi, i am using HR_infotype_operations func module, basically a dynamic action triggers a subroutine in a report progrm and there I am using this functiom module, but it is not able to insert values in one of my custom infotype giving error in the re
-
Why can't I get adobe pdf translator to open?
why can't I get adobe pdf translator to open?
-
Video Podcasts are not syncing
I initially thought this was a problem with my ipod, but after looking at the file types that I'm downloading (the Clerks 2 and South Park video podcasts) it looks like the file type I'm downloading isn't compatible with the ipod (quicktime). Why is
-
Error Message: "+may be conflicts between third party midi drivers+" SOLVED... by plugging my M-Audio Audiophile USB interface DIRECTLY into a USB input ON THE COMPUTER itself, rather than plugging into an external USB hub (Kensington powered hub). T
-
Have updated phone to ios 5 now i cannot connect to safari can anyone help pls
I have updated phone to ios 5 now i cannot connect to safari can anyone help pls