Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / First Aid / January 2005

Tip: Looking for answers? Try searching our database.

difficulty setting toString()

Thread view: 
thufir - 27 Jan 2005 14:18 GMT
Why is Monster.toString() returning @11b86e7 instead of 0?

Monster.setToString() is supposed to take a String as a parameter,
whose value
is assigned to "name," which toString() should return.  It's unclear to
me why
toString() isn't returning "name," but hashcode.

///////////////command line/////////////////
C:\>
C:\>java -jar java\classes\TestDriveMonsters.jar
..main
..makeMonsters
..makeSwords
..setOwner
..setOwner
..setOwner
..setOwner
..setOwner
..setMonsterTask
..setScheduleMelee
..setScheduleMelee
..setScheduleMelee
..setScheduleMelee
..setScheduleMelee
..setMonsterToString
..setToString monster 0
..setToString monster 1
..setToString monster 2
..setToString monster 3
..setToString monster 4
..run atreides.monsters.MonsterTask@11b86e7
..run atreides.monsters.MonsterTask@35ce36
..run atreides.monsters.MonsterTask@757aef
..run atreides.monsters.MonsterTask@d9f9c3
..run atreides.monsters.MonsterTask@9cab16

C:\>cd java\sources\atreides\monsters

C:\java\sources\atreides\monsters>type *

Monster.java

package atreides.monsters;

public class Monster{

boolean isDaemon = false;
java.util.Timer melee = new java.util.Timer(isDaemon);
private String name = "";

private static java.util.List<MonsterItem> list =
new java.util.ArrayList<MonsterItem>();

public Monster(){}//Monster

public void setScheduleMelee(long period){
System.out.println("..setScheduleMelee");
java.util.TimerTask dummyTask = new MonsterTask();
java.util.Date nowDate = new java.util.Date();
melee.scheduleAtFixedRate(dummyTask,period,period);
}//setScheduleMelee

public void setToString(String name){
System.out.println("..setToString " + name);
this.name = name;
}//setToString

public String toString(){
return this.name;
}//toString

public static void main (String args[]) {
System.out.println("main..");
}//main
}//Monster

MonsterItem.java

package atreides.monsters;

public interface MonsterItem{

public void setOwner(Monster m);

}//MonsterItem

MonsterTask.java

package atreides.monsters;

public class MonsterTask
extends java.util.TimerTask{

public MonsterTask(){}//MonsterTask

public boolean cancel(){
return false;
}//cancel

public void run(){
System.out.println("..run " + toString() );
}//run

public long scheduledExecutionTime(){
return 0;
}//scheduledExecutionTime

public static void main (String args[]) {
System.out.println("main..");
}//main
}//MonsterTask

Sword.java

package atreides.monsters;

public class Sword implements MonsterItem{

Sword(){}

public void setOwner(Monster m){
System.out.println("..setOwner " + m);
}//give

}//Sword

TestDriveMonsters.java

package atreides.monsters;

import java.util.*;

public class TestDriveMonsters{

private static List<Monster> list = new ArrayList<Monster>();

public TestDriveMonsters(){
System.out.println("TestDriveMonsters..");
}//TestDriveMonsters

public static void makeMonsters(){
System.out.println("..makeMonsters");
for (int i=0; i<5; i++){
list.add(new Monster());
}//for
}//makeMonsters

public static void makeSwords(){
System.out.println("..makeSwords");
for (Monster monster:list){
MonsterItem sword = new Sword();
sword.setOwner(monster);
}//for
}//makeSwords

public static void setMonsterTask(){
System.out.println("..setMonsterTask");
for (Monster monster:list){
monster.setScheduleMelee(4000);
}//for
}//setMonsterTask

public static void setMonsterToString(){
System.out.println("..setMonsterToString");
int i = 0;
for (Monster monster:list){
monster.setToString("monster " + i);
i++;
}//for
}//setMonsterToString

public static void main (String args[]) {
System.out.println("..main");
makeMonsters();
makeSwords();
setMonsterTask();
setMonsterToString();
}//main
}//TestDriveMonsters
C:\java\sources\atreides\monsters>

thanks,

Thufir Hawat
thufir - 27 Jan 2005 14:22 GMT
MonsterTask.run() must be returning something besides
Monster.toString(), obviously.  How can MonsterTask.run() return "this"
Monster.toString(), please?

thanks,

Thufir Hawat
Roland - 27 Jan 2005 14:37 GMT
> MonsterTask.run() must be returning something besides
> Monster.toString(), obviously.  How can MonsterTask.run() return "this"
[quoted text clipped - 3 lines]
>
> Thufir Hawat

Currently, a MonsterTask knows nothing of a Monster. So you'll have to
tie them somehow together. Does a MonsterTask always belong to one
Monster ("One MonsterTask manages one Monster")? If so, this can be
modeled by creating an instance variable (aka field, or member variable)
of type Monster in Monstertask, and assigning it properly.

Signature

Regards,

Roland de Ruiter
  ___      ___
 /__/ w_/ /__/
/  \ /_/ /  \

thufir - 29 Jan 2005 12:11 GMT
[..]
> Currently, a MonsterTask knows nothing of a Monster. So you'll have to
> tie them somehow together. Does a MonsterTask always belong to one
> Monster ("One MonsterTask manages one Monster")? If so, this can be
> modeled by creating an instance variable (aka field, or member variable)
> of type Monster in Monstertask, and assigning it properly.
[..[

I think I follow you, but am drawing a blank on how to implement it.  A
Monster instance reference needs to be passed; what reference gets
passed and to which method?

How can output like "monster one running" be periodically generated?
It seems that MonsterTask needs to reference a Monster instance...

thanks,

Thufir Hawat

///////////////////////////MonsterTask/////
package atreides.monsters;

public class MonsterTask
extends java.util.TimerTask{

public void run() {
System.out.println( "..run" );
}//run

}//MonsterTask

///////////////////////////Monster////////
package atreides.monsters;

public class Monster{

java.util.Timer timer = new java.util.Timer();
java.util.TimerTask task = new MonsterTask();

private static java.util.List<MonsterItem> list;

private java.util.Date timeStamp;

private int monsterNumber = 0;

public Monster(int i){
timeStamp = new java.util.Date();
monsterNumber = i;
list = new java.util.ArrayList<MonsterItem>();
}//Monster

public void setTimerPeriod(long period, Monster aMonster){
period = 2000;
long lag = 1000;
timer.schedule( task, lag, period );
}//setTimerPeriod

public String toString(){
return    "\n\t..toString..\t" + timeStamp +
"\n\t monsterNumber\t" + monsterNumber;
}//toString

}//Monster


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.