java compiler gesucht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

java compiler gesucht

Beitrag von fabske » 01.11.2004 14:00:13

ich habe hier mein erstes übungsblatt für praktische informatik. leider litt ich die letzten tage an grippe und konnte das tutorium am freitag nicht besuchen, wo das womöglich alles erklärt worden wäre.
jedefalls soll ich folgendes java programm übersetzen und durch herumspielen rausfinden was das programm macht:

http://www.informatik.uni-ulm.de/ki/Edu ... sgabe.java

Code: Alles auswählen

class Ausgabe {

  static int eingabe() {
    int i = -1;
    String s = "";
    while (i < 0)
    {
       System.out.print("Bitte eine natürliche Zahl eingeben: ");
       try { 
         s = new java.io.BufferedReader(
                 new java.io.InputStreamReader(System.in)).readLine();
       }
       catch (java.io.IOException e) {}
       try {
         i = java.lang.Integer.parseInt(s);
       }
       catch (java.lang.NumberFormatException e){}
    }
    return i;
  }

  public static void main(String[] args) {
    int e = eingabe();
    int a = 0;
    for (int i=1; i<=e; i++) 
      if (i*i<=e) 
        a+=i*i;
    int b = (e+1)*e/2;
    System.out.println("a = " + a + ", b = " + b);
  }

}
ich hab mir den quellcode angeschaut aber nicht wirklich was rauskriegen können. bei apt hab ich nach einem java compiler gesucht und den gcj gefunden. hab ich auch gleich installiert und dazu das paket libgcj4-dev. doch es passiert folgendes:
mohameth@uoi-01:~$ gcj Ausgabe.java
/usr/lib/gcc-lib/i486-linux/3.3.4/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:98: undefined reference to `main'
collect2: ld returned 1 exit status
kann mir da jemand nen crach kurs geben?
danke
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?

Maj0r
Beiträge: 476
Registriert: 08.12.2003 14:52:39
Wohnort: Jüchen, Ne
Kontaktdaten:

Beitrag von Maj0r » 01.11.2004 14:04:25

Unter Tipps findest Du eine Anleitung zum Java-Package-Generator.

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 01.11.2004 14:54:18

Hallo,
du mußt dem gcj sagen was die main Klasse ist, wenn deine Datei Ausgabe.java heißt, dann sollte es so gehen:

Code: Alles auswählen

gcj --main=Ausgabe Ausgabe.java
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 01.11.2004 18:28:22

Wenn Du ernsthaft etwas mit Java anfangen willst, besorge Dir ein JSDK 1.4.x und lese das Java-Tutorial (online oder offline).

Das Progrämmchen ist ziemlich simpel, ich gebe das jetzt nur einen kleinen Tipp ab, was es macht: Es führt abhängig von der eingegebenen Zahl ein paar sinnlose Berechnungen durch und präsentiert Dir (zusammenhanglos zur Eingabe) ein Ergebnis.

:wink:

Kallisti
Beiträge: 39
Registriert: 01.09.2004 11:48:50

Beitrag von Kallisti » 01.11.2004 23:17:21

vorrausgesetzt, der Code in der "eingabe" Klasse ist richtig (dazu kenne ich Java zu wenig^^) und der Rückgabewert ist wirklich eine vom Benutzer eingegebene Integerzahl, dann ist doch die Ausgabe keineswegs zusammenhanglos zur Eingabe....


a ist die Summe aller Quadratzahlen kleinergleich der Eingabe
b ist die Summe aller Ziffern von 1 bis zur Eingabe, also zB 55 bei 10...

Wahrlich sinnlos ist natürlich die Konstruktion der Schleife...

for (int i=1; i<=e; i++)
if (i*i<=e)

wäre doch effizienter durch:

for (int i=1; i*i<=e; i++)

ausgedrückt, die die Werte von i*i>e sowieso nicht verwendet werden.

Oberteufel
Beiträge: 9
Registriert: 23.09.2004 16:47:44
Wohnort: Hamburg

Beitrag von Oberteufel » 03.11.2004 13:47:08

Das ist so leider nicht ganz richtig,

a: maximale Zahl, deren Quadrat kleinergleich ist, als die Eingabe.
b: jepp

Sinnlos ist das Konstrukt leider nicht. Zu achten ist hierbei, dass nach der for- und if-Schleife kein neuer Block definiert wird und somit nur jeweils die nächste Anweisung zum jeweiligen Kontrollelement gezählt wird. Würdest du nun deine Vereinfachung anwenden, würde gleich beim erst besten Quadrat, also dem kleinsten, abbrechen,...

Gruß, Oberteufel...

Kallisti
Beiträge: 39
Registriert: 01.09.2004 11:48:50

Beitrag von Kallisti » 03.11.2004 14:50:27

Nein er wuerde dieselbe Ausgabe erzeugen, denn alle Schleifendurchlaeufe fuer i*i > e sind ja eh leer.

Natuerlich muss die berechnugn direkt unter meiner Schleife stehen.


Zu a: das meinte ich ja mit Quadratzahlen.... und es ist nicht die Maximale, sondern die Summe aller ( da steht +=....) also bei Eingabe von 10, ergaebe sich ein a von:
1*1+2*2+3*3 = 12

Das ist nicht die groesstmoegliche Quadratzal, sondern eben exakt die Summe aller Quadratzahlen kleiner gleich eingabe....

Oder habe ich da nen Denkfehler drin?

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 03.11.2004 14:59:31

verschoben.
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

LittleBoy
Beiträge: 718
Registriert: 30.04.2002 14:32:26

Beitrag von LittleBoy » 04.11.2004 17:49:51

Das Skript berechnet einmal die Summe aller Quadratzahlen von 1 bis e (a) - und zum anderen die Summe aller Zahlen von 1 bis e (b).

Die for Schleife kann man wirklich so schreiben, wie Kallisti es geschrieben hat ...

Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

Beitrag von fabske » 07.01.2005 19:04:30

ich hab ein problem. ich habe neuinstalliert und nun gehen meine java programme die davor einwandfrei funktionierten nicht mehr!

z.b. das hier:

Code: Alles auswählen

//this source is under gpl!


class matrix
{
    static int eingabe() {
	int i = -1;
	String s = "";
	while (i < 0) {
	    System.out.print("Bitte eine natürliche Zahl eingeben: ");
	    try { 
		s = new java.io.BufferedReader(
		       new java.io.InputStreamReader(System.in)).readLine();
	    }
	    catch (java.io.IOException e) {}
	    try {
		i = java.lang.Integer.parseInt(s);
	    }
	    catch (java.lang.NumberFormatException e){}
	}
	return i;
    }



    /*
     * Initialisierung des Zufallszahlengenerators durch
     * den momentanen Zeitstempel verhindert, dass bei
     * jedem Start des Programms die selbe Zahlenfolge
     * generiert wird.
     */
    static final java.util.Random generator =
             new java.util.Random(System.currentTimeMillis());

    /**
     * Liefert eine Pseudozufallszahl. Die Zahlen
     * werden gleichverteilt erzeugt.
     */
    public static int zufall(){
                                return generator.nextInt(1000);
    }


	public static void main( String shit[] )
	{

	int [][] M1;
	int [][] M2;
	int n = eingabe();
	M1 = new int [n][n];
	M2 = new int [n][n];

	for ( int i=0 ; i<n ; i=i+1)
		{ System.out.println();
		
		for ( int j=0 ; j<n ; j=j+1)
			{ M1 [i][j] = zufall();
			System.out.print( M1 [i][j] );
			System.out.print( " " );
			}
		}
	System.out.println();
	System.out.println();

	boolean sym = true;
	
	 
	for ( int k=0 ; k<n ; k=k+1)
		
		{for ( int l=0 ; l<n ; l=l+1)
			{ M2 [k][l] = M1 [l][k];
			if (M2 [k][l] != M1 [k][l])
				sym = false;}
		}

	if (sym==true)
	{System.out.println( "Matrix ist symmetrisch. \nTransponierte Matrix: \n");}
	else {System.out.println( "Matrix ist nicht symmetrisch. \nTransponierte Matrix:");}
	
	
	for ( int p1=0 ; p1<n ; p1=p1+1)
		{System.out.println();
		
		for ( int p2=0 ; p2<n ; p2=p2+1)	
			{System.out.print( M2 [p1][p2]);	
			System.out.print( " ");}
		}
	System.out.println();
	System.out.println();
	}
}
ich kann es nachwievor einwandfrei kompilieren, beim ausführen passiert dann aber was komisches:
mohameth@uoi-01:/mnt/mohameth.uoi-server-01/produkte/programmieren/java$ ./a.out
Bitte eine natürliche Zahl eingeben: 3
Abgebrochen
bei den anderen programmen passiert sowas ähnliches. ich kann jedes einzelne kompilieren, aber beim ausführen spinnt er. z.b.:
mohameth@uoi-01:/mnt/mohameth.uoi-server-01/produkte/programmieren/java$ gcj --main=fibonacci fibonacci.java
mohameth@uoi-01:/mnt/mohameth.uoi-server-01/produkte/programmieren/java$ ./a.out
Bitte eine natürliche Zahl eingeben: 4
Hier kommen die Fibonacci Zahlen:
false
true
true
true
ich frag mich was da nun aufeinmal los ist? außdem hab ich 2 gcj installiert, den 3.3 und den 3.4, wobei der 3.3 default ist, aber das seht ihr ja selbst:
lrwxrwxrwx 1 root root 7 2005-01-05 11:46 gcj -> gcj-3.3
-rwxr-xr-x 1 root root 89836 2004-12-19 18:18 gcj-3.3
-rwxr-xr-x 1 root root 89772 2004-12-19 03:16 gcj-3.4
lrwxrwxrwx 1 root root 8 2005-01-05 11:46 gcjh -> gcjh-3.3
-rwxr-xr-x 1 root root 51796 2004-12-19 18:18 gcjh-3.3
-rwxr-xr-x 1 root root 51180 2004-12-19 03:16 gcjh-3.4
-rwxr-xr-x 1 root root 2808 2004-08-26 09:27 gcjh-wrapper-3.3
-rwxr-xr-x 1 root root 2808 2004-12-19 00:40 gcjh-wrapper-3.4
lrwxrwxrwx 1 root root 15 2005-01-05 11:46 gcj-wrapper -> gcj-wrapper-3.3
-rwxr-xr-x 1 root root 2934 2004-08-26 09:27 gcj-wrapper-3.3
-rwxr-xr-x 1 root root 2934 2004-12-19 00:40 gcj-wrapper-3.4
wenn ich nun den 3.4 zum kompilieren nehme dann geht es gar nimmer:
mohameth@uoi-01:/mnt/mohameth.uoi-server-01/produkte/programmieren/java$ gcj-3.4 --main=fibonacci fibonacci.java
fibonacci.java:11: Fehler: unrecognized character in input stream.
System.out.print("Bitte eine natürliche Zahl eingeben: ");
^
fibonacci.java:12: Fehler: unrecognized character in input stream.
Bitte eine nat try {
^
fibonacci.java:12: Fehler: String not terminated at end of line.
try {
^
3 errors
mohameth@uoi-01:/mnt/mohameth.uoi-server-01/produkte/programmieren/java$ gcj-3.4 --main=matrix matrix.java
matrix.java:11: Fehler: unrecognized character in input stream.
System.out.print("Bitte eine natürliche Zahl eingeben: ");
^
matrix.java:12: Fehler: unrecognized character in input stream.
Bitte eine nat try {
^
matrix.java:12: Fehler: String not terminated at end of line.
try {
^
3 errors
kann mir vielleicht irgendjemand sagen was da los ist?
danke[/code]
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?

Antworten