/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Menu ?
Fra : Simon...


Dato : 16-03-02 09:32

Hej,

Jeg er ny mht. java, jeg har lige fået det på 2. semester som datamatiker.

Vi har efter hånden lavet en masse små underlige programmer, og så tænkte
jeg på om
jeg ikke kunne lave en menu, der kunne eksekvere de her andre .class filer ?

er der ikke en commando til sådan noget ?

- Min lærer så meget uforstående ud da jeg spurgte ham, og snakkede noget om
man kun kunne have
en main.

De .class filer jeg gerne vil eksekvere er som fx. den nedenfor.

Mange tak for hjælpen !

Mvh.Simon.


---
import cs1.Keyboard;

public class Echo
{
public static void main (String[] args)
{
System.out.println ("Enter a line of text: ");

message = Leyboard.readString();

System.out.println ("You entered: \"" + message + "\"");

}
}
---



 
 
Bertel Lund Hansen (16-03-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-03-02 09:49

Simon... skrev:

>- Min lærer så meget uforstående ud da jeg spurgte ham, og snakkede noget om
>man kun kunne have en main.

Det vil også være den enkleste måde at klare problemet på:

class KlasseEt { metodeEt() }
class KlasseTo { metodeTo() }
class KlasseTre { metodeTre() }
class KlasseFire { metodeFire() }

class DoIt {
KlasseEt one;
KlasseTo two;
...

public static void main(String[] aughh) {
if (dertastes1) one.metodeEt();
if (dertastes2) two.metodeTo();
...
}
}


>De .class filer jeg gerne vil eksekvere er som fx. den nedenfor.

Du forestiller dig nok et 'rammeprogram' hvorfra du kan aktivere
alle de små øvelser hver for sig. Problemet med en Javastyring
til det er at der kun må være én main i et Javaprogram.

Det kunne klares ved at indbygge et systemkald i Javaprogrammet
eller ved at styre småprogrammerne fra en batch-fil, men begge
dele er sådan set irrelevante for Java som sådan.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Lars Dam (16-03-2002)
Kommentar
Fra : Lars Dam


Dato : 16-03-02 10:23

On Sat, 16 Mar 2002 09:49:12 +0100, Bertel Lund Hansen
<nospam@lundhansen.dk> wrote:

>>De .class filer jeg gerne vil eksekvere er som fx. den nedenfor.
>
>Du forestiller dig nok et 'rammeprogram' hvorfra du kan aktivere
>alle de små øvelser hver for sig. Problemet med en Javastyring
>til det er at der kun må være én main i et Javaprogram.

Det er ikke helt sandt! - der må kun være een main i een klasse; der
er ikke noget i vejen for at man kan have flere klasser med hver sin
main; man kan dog kun starte een main klasse ad gangen i JVM'en,
meeen, kig på denne konstruktion:

public class Launcher{
   public static void main(String[] args){
      System.out.println("In Launcher");
      String[] newargs=new String(args.length);
      for(int i=0; i<newargs.length; i++ ){
         newargs[i]=args[i+1];
      }
      
      if( "A".equals(args[0]) ){
         A.main(newargs);
      }else if( "B".equals(args[0]) ){
         B.main(newargs);
      }else if( "C".equals(args[0]) ){
         C.main(newargs);
      }else{
         System.out.println("No class given");
      }
   }
}

public class A{
   public static void main(String[] args){
      System.out.println("In A");
   }
}

public class B{
   public static void main(String[] args){
      System.out.println("In B");
   }
}

public class C{
   public static void main(String[] args){
      System.out.println("In C");
   }
}

Ovenstående gør, at følgende er muligt
java A   // starter A
java B   // starter B
java C   // starter C
java Launcher A   // starter A
java Launcher B   // starter B
java Launcher C   // starter C

Man kan så brygge lidt videre på dette, og lave en menustyring af den
ene, eller den anden slags, der starter forskellige main klasser op.

vh. ld

Martin Moller Peders~ (16-03-2002)
Kommentar
Fra : Martin Moller Peders~


Dato : 16-03-02 11:44

In <3b169ug3u420i4ice8c0ng0d7bg19vr4iv@sunsite.auc.dk> Bertel Lund Hansen <nospam@lundhansen.dk> writes:

>Simon... skrev:

>>- Min lærer så meget uforstående ud da jeg spurgte ham, og snakkede noget om
>>man kun kunne have en main.

>Det vil også være den enkleste måde at klare problemet på:

>class KlasseEt { metodeEt() }
>class KlasseTo { metodeTo() }
>class KlasseTre { metodeTre() }
>class KlasseFire { metodeFire() }

>class DoIt {
> KlasseEt one;
> KlasseTo two;
> ...

> public static void main(String[] aughh) {
> if (dertastes1) one.metodeEt();
> if (dertastes2) two.metodeTo();
> ...
> }
>}


>>De .class filer jeg gerne vil eksekvere er som fx. den nedenfor.

>Du forestiller dig nok et 'rammeprogram' hvorfra du kan aktivere
>alle de små øvelser hver for sig. Problemet med en Javastyring
>til det er at der kun må være én main i et Javaprogram.

Nej, der maa gerne vaere en main-metode per klasse. Og en main-metode kan
godt kalde main-metoder i andre klasser.

/Martin


>http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Frederik Hansen (16-03-2002)
Kommentar
Fra : Frederik Hansen


Dato : 16-03-02 10:27

Hej Simon

Det er sandt, at der logisk set kun kan være en main i et program, men
der er ikke noget i vejen med at denne main kalder andre mains.. Altså
jeg forestiller mig følgende, kunne vise en vej :

public class menuMain {

public static void main(String[] args)
{
do{
   System.out.println("Menu");
   System.out.println("1. Program 1");
   System.out.println("9. Slut");
   char tast = <kode til at læse tastatur tryk>;
   if (tast == '1')
      Program1.main(args);
while (tast != '9')
}

Hvis dine programmer skal kunne tage argumenter, kan du måske bruge
sådan noget som :

..
..
if (tast == '1')
{
   String args1[] = readArgs(9);
   Program1.main(args1);
}
..
..
   
public String[] readArgs(int numberOfArgs)
{
   String[] result = new String[numberOfArgs];
   for (int i = 0; i < numberOfArgs; i ++)
   {
   System.out.println("Enter argument " + i + " : ");
   result[i] = <kode til læsning af tastatur>
   }
   return result;
}


Simon... wrote:

> Hej,
>
> Jeg er ny mht. java, jeg har lige fået det på 2. semester som datamatiker.
>
> Vi har efter hånden lavet en masse små underlige programmer, og så tænkte
> jeg på om
> jeg ikke kunne lave en menu, der kunne eksekvere de her andre .class filer ?
>
> er der ikke en commando til sådan noget ?
>
> - Min lærer så meget uforstående ud da jeg spurgte ham, og snakkede noget om
> man kun kunne have
> en main.
>
> De .class filer jeg gerne vil eksekvere er som fx. den nedenfor.
>
> Mange tak for hjælpen !
>
> Mvh.Simon.


--
Venlig hilsen

Frederik Hansen

Sun Certified Programmer
for the Java(tm) 2 Platform

email : frederik@roirex.dk
www : www.roirex.dk


Simon... (17-03-2002)
Kommentar
Fra : Simon...


Dato : 17-03-02 08:06

tak allesammen, jeg kigger lige på det og prøver... så vender jeg frygteligt
tilbage når det ikke vil virke :)

mvh.Simon




Flemming (17-03-2002)
Kommentar
Fra : Flemming


Dato : 17-03-02 16:04

Kunne du ikke lave et interface f.eks

application
init
start
stop


med de ovestående metoder og lade dine class filer implementere dette ??

så kunne du i din java menu lave noget alla Class.forName ("navn på class
file");
og type caste til interfacet og får kalde init herefter start og til sidst
stop. metoderne


Det er hvertifald set før at det virker



hygge




"Simon..." <devnull@linux.org> wrote in message
news:3c930306$0$66992$edfadb0f@dspool01.news.tele.dk...
> Hej,
>
> Jeg er ny mht. java, jeg har lige fået det på 2. semester som datamatiker.
>
> Vi har efter hånden lavet en masse små underlige programmer, og så tænkte
> jeg på om
> jeg ikke kunne lave en menu, der kunne eksekvere de her andre .class filer
?
>
> er der ikke en commando til sådan noget ?
>
> - Min lærer så meget uforstående ud da jeg spurgte ham, og snakkede noget
om
> man kun kunne have
> en main.
>
> De .class filer jeg gerne vil eksekvere er som fx. den nedenfor.
>
> Mange tak for hjælpen !
>
> Mvh.Simon.
>
>
> ---
> import cs1.Keyboard;
>
> public class Echo
> {
> public static void main (String[] args)
> {
> System.out.println ("Enter a line of text: ");
>
> message = Leyboard.readString();
>
> System.out.println ("You entered: \"" + message + "\"");
>
> }
> }
> ---
>
>



Simon... (20-03-2002)
Kommentar
Fra : Simon...


Dato : 20-03-02 19:43


> Kunne du ikke lave et interface f.eks
>
> application
> init
> start
> stop
>
>
> med de ovestående metoder og lade dine class filer implementere dette ??
>
> så kunne du i din java menu lave noget alla Class.forName ("navn på class
> file");
> og type caste til interfacet og får kalde init herefter start og til sidst
> stop. metoderne
>
>
> Det er hvertifald set før at det virker
Tak,
men nu er vi vidst lige blevet lidt mere avancerede end mig, jeg er
nybegynder ;)
mvh.Simon



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste