Hilfe beim Umschreiben von Javascript nach Java

pap

Mitglied
Ich habe einen von mir geschriebenen Javascript Code und würde den gerne in einen Javacode umschreiben. Kann mir dabei jemand helfen?

Hier der Code:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Text-Statistik</title>
<script type="text/javascript">



 
function auswerten()
{
var text = document.forms['f1'].textarea_in.value;
var wort_array = text.split(" ");
var new_text = new Array();
for (var i=0;i<wort_array.length;i++)
   {
          new_text[i]=normalisiertesWort(wort_array[i]);
   }
          document.forms['f1'].anzahl.value = i;
	
function normalisiertesWort(s) 
{
var satzZeichen = "\",;:.!?-";  //herauszufilternde Zeichen
var w = ""; 
s = s.toLowerCase();  // Umwandlung in Kleinbuchstaben

  for (var i=0; i < s.length; i++) 
    { 
        if (satzZeichen.indexOf( s.charAt(i)) == -1) // kein Satzzeichen 
		{  
            w = w + s.charAt(i);  // also in den Wortstring uebernehmen
        } 
    } 
    return w 
}  


 new_text.sort();
 var j=1;
 array=new Array();
 var m=0;
 
    for(var k=0;k<new_text.length;k++)
	{
        if(new_text[k] === new_text[k+1])
		{
            j++;
        }
          else
		  {
            array[m] = new Array(2);
            array[m][0] = new_text[k];
            array[m][1] = j;
            m++;
            j=1;
          }
    }
	
  var tausch_a;
  var tausch_b;
  var unsortiert = true;
  
    while(unsortiert)
	{
     unsortiert = false;
    
    for(m=0; m<array.length-1 ;m++)
	   {

	if(array[m][1] < array[m+1][1])
	      {
                tausch_a = array[m+1][1];
                tausch_b = array[m+1][0];
                array[m+1][1] = array[m][1];
                array[m+1][0] = array[m][0];
                array[m][1] = tausch_a;
                array[m][0] = tausch_b;
                unsortiert = true;
           }
       }
    }
		
    
	document.forms['f1'].elements[4].value ="Wort";
    document.forms['f1'].elements[5].value ="Häufigkeit, h(i)";
	
    document.forms['f1'].w1.value = array[0][0];
	document.forms['f1'].h1.value = array[0][1]+"    "+ (array[0][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w3.value = array[1][0];
    document.forms['f1'].h2.value = array[1][1]+"    "+ (array[1][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w5.value = array[2][0];
    document.forms['f1'].h3.value = array[2][1]+"    "+ (array[2][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w7.value = array[3][0];
    document.forms['f1'].h4.value = array[3][1]+"    "+ (array[3][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w9.value = array[4][0];
    document.forms['f1'].h5.value = array[4][1]+"    "+ (array[4][1]*100/i).toFixed(1) + " %";
    
	document.forms['f1'].w11.value = array[5][0];
	document.forms['f1'].h6.value = array[5][1]+"    "+ (array[5][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w13.value = array[6][0];
    document.forms['f1'].h7.value = array[6][1]+"    "+ (array[6][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w15.value = array[7][0];
    document.forms['f1'].h8.value = array[7][1]+"    "+ (array[7][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w17.value = array[8][0];
    document.forms['f1'].h9.value = array[8][1]+"    "+ (array[8][1]*100/i).toFixed(1) + " %";
    document.forms['f1'].w19.value = array[9][0];
    document.forms['f1'].h10.value = array[9][1]+"    "+ (array[9][1]*100/i).toFixed(1) + " %";
	
}
 
</script>
</head>
<body>
<h3>Text-Statistik</h3>
<form id="f1" action="">
    <p>
	
  <label for = "text"><strong> Eingabetext: </strong></label><br/>

  <textarea name="textarea_in" cols="70" rows="20"></textarea><br/><br/>
     <button type ="button" onclick = "auswerten()"> Auswerten </button>
     <button type ="reset"> Neu </button><br/><br/>
  <label for ="anzahl">Anzahl der Wörter: </label>
    <input type = "text" id="anzahl" name = "anzahl" readonly = "readonly" size = "4" /> <br/><br/>

    <input type = "text" readonly = "readonly" /><input type = "text" readonly = "readonly" size = "13"/><br/>    
	<input type = "text" id="w1"readonly = "readonly" /><input type = "text" id="h1" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w3"readonly = "readonly" /><input type = "text" id="h2" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w5"readonly = "readonly" /><input type = "text" id="h3" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w7"readonly = "readonly" /><input type = "text" id="h4" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w9"readonly = "readonly" /><input type = "text" id="h5" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w11"readonly = "readonly" /><input type = "text" id="h6" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w13"readonly = "readonly" /><input type = "text" id="h7" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w15"readonly = "readonly" /><input type = "text" id="h8" readonly = "readonly" size = "13"/><br/>

	<input type = "text" id="w17"readonly = "readonly" /><input type = "text" id="h9" readonly = "readonly" size = "13"/><br/>
	<input type = "text" id="w19"readonly = "readonly" /><input type = "text" id="h10" readonly = "readonly" size = "13"/><br/>
	
	</p>
  </form> 
</body>
</html>
 
Zuletzt bearbeitet:
Hallo pap
Ich hoffe, dir ist bewusst, dass zwischen Java und JavaScript Welten liegen - der Name ist zwar ähnlich, die Syntax ansatzweise ähnlich, aber Nutzen, Verwendung & Einsatzgebiete sind völlig verschieden!

Was möchtest du damit machen? Eine Java-Desktop-Anwendung? ein Applet? Ein Servlet, das dir Webseiten generiert/verarbeitet?
 
Ich will ein Java Programm, das einen als String-Datenwert enthaltenen Text statistisch auswertet.
Im Grund sollte das Programm, dass ich in der Konsole übersetzen und starten kann, folgendes (wie der Javascriptquellcode) können:

1. die im Text vorkommenden unterschiedlichen Wörter ermitteln.
2. die Häufigkeit jedes dieser Wörter angeben
3. die 10 häufigsten nach mit ihrer prozentualen Wahrscheinlichkeit ausgeben.

Das habe ich so ja in dem oben geposteten Code programmiert, nur das das mit dem String Datenwert unterschiedlich ist und halt keine Java Code.
Ich würde gerne, dass die eingefügten Dokumentationskommentare von javadoc berücksichtigt werden.

Die würde das gerne in 3 Klassen schreiben:
1. main Klasse
2. Klasse Text mit Attributen und Methoden, die zur Darstellung und Verarbeitung von Texten
gehört
3. Eine Klasse SelectionSort mit Attributen und Methoden, die für das SelectionSort-Verfahren
verwendet werden.

Ich weiß, dass das zwei verschiedene Angelegenheiten sind, deswegen kann ich bis jetzt auch nur mit ersterer was anfangen. Hilfe wäre wirklich gut.
 
Zuletzt bearbeitet:
Nun ... da wirst du mit einer Consolen-Anwendung nicht weit kommen.
Java != JavaScript
Das eine hat mit dem anderen bis auf den Namen nur SEHR WENIG zu tun.
Wenn du sowas halbwegs ähnlich in Java programmieren willst musst du auch eine GUI dazu entwerfen , designen und ausprogrammieren. *Ja dafür gibt es GUI-Editoren.* So einfach mit "Start von Console" wird da nichts. Ich glaube du stellst dir das ETWAS zu einfach vor einfach JavaScript nach Java zu portieren. Selbst ich als erfahrender Programmierer habe gerade etwas schwierigkeiten herauszulesen WAS genau du machen willst und vorallem WIE du dir die Umsetzung vorstellst. Auch für uns ist es nicht einfach das mal eben zu portieren da wir durch den HTML-Code *hier solltest du im übrigen auch wirklich die Code-Tags für HTML verwenden , nicht für Java da beide Sprachen unterschiedliche Syntax haben* zwar halbwegs wissen wie es Aussieht und uns daraus auch halbwegs vorstellen können wie es fertig aussehen soll , aber einfach hier ins Forum kommen , uns einen Source an den Kopf werfen *der im übrigen auch noch in falschen Code-Tags steht* und dann stumm sagen : na nu macht mal ...
NEIN
so läuft das hier nicht. Und ohne einen Funken eigeninitiative schon mal GAR NICHT.

Hast du überhaupt erfahrungen was Java angeht ?
Hast du dich schon mal näher mit dem Thema Programmieren beschäftigt *NEIN ... JavaScript ist wie der Name schon sagt SCRIPTING ... das hat nur entfernt was mit Programmieren zu tun* ?
Hast du sonstige Erfahrungen außer HTML und JavaScript ?

Es gehört nunmal etwas mehr dazu programmieren zu können als simples scripten. Es wäre für uns ein leichtes dir lediglich zu antworten : es gibt in Java eine Script-Engine die unteranderem auch mit JavaScript umgehen kann. Das Ergebnis wäre : dein "Code" funktioniert so wie du ihn ursprünglich konzipiert hast ... was es NICHT wäre : eine Portierung nach Java. Es wäre lediglich eine Ausführung von JavaScript innerhalb eines Java-Programms über eine JavaScript-Engine. Aber so sind wir nicht. Wir werden gerne versuchen dir bei deiner Portierung zu helfen. Aber wenn du noch nicht einmal den Unterscheid zwischen Java und JavaScript kennst *oben erwähnt* und auch nicht gewillt bist dich mit der Thematik Java und Programmieren aus einanderzusetzen sei dir gesagt : wir erledigen hier für keinen die Drecksarbeit. Dafür gibt es andere Foren *z.B. Job-Börse auf http://java-forum.org*, aber mit fachlichen Diskusionen wie sie hier nun einmal stattfinden hat es NICHTS zu tun.
 
Ich wollte hier keinem zu Nahe treten. Ich habe angefangen mich heute für Klausuren vorzubereiten und dachte mir, dass ich Java am einfachsten lerne, wenn ich eine erneute Übertragungsaufgabe mache. Ich habe sowas, nur nicht aus mehreren Classen, schonmal vor zwei Wochen gemacht, in dem ich das Newtonverfahren der nth-Wurzel als Java Anwendung geschrieben habe. Da hatte ich auch zuvor die gleiche Aufgabe mit Javascript gelöst. Da habe ich auch eine .java geschrieben, die mit der Konsole übersetzt und ausgeführt. Ich dachte, dass das damit auch geht.
In erster Linie wollte ich hier meinen Code für alle freigeben, die daran vielleicht Interesse haben. Ich finde es immer hilfreich, in den Foren Sourcecode zu finden, der mit einer gewissen Erklärungsarbeit unterlegt worden ist. Desweiteren wollte ich dann mit Hilfe, da ich wirklich wenig Ahnung von Java habe, die Aufgabe lösen. Ist auf jeden Fall schonmal sehr nett, dass ihr euch Gedanken zu der Aufgabe macht.
Ich habe den Code in JAVA Klammern gepostet, weil ich dachte, dass dein Vorredner das so gewünscht hat. Also, in HTML Klammern posten, gespeichert ;)
Ich versteh C und C++ Code, zumindestens wenn ditte jemand programmiert hat zuvor.
 
Zuletzt bearbeitet:
Da habe ich auch eine .java geschrieben, die mit der Konsole übersetzt und ausgeführt. Ich dachte, dass das damit auch geht.
Es geht schon...aber ohne Berücksichtigung von JavaScrpt
einfach neu schreiben ist in dem Fall vermutlich schneller.

Wenn du unbedingt aus anderen Sprachen was portieren willst, würde ich eher C# oder C++ vorschlagen.

Gruß
 
@pop
Du bist hier keinem zu nahe getreten, aber es hörte sich in denem Post einfch so an als ob du uns hier einfach was hinwirfst und dann der Meinung bist : "nu macht mal". Die Info das du bereits erfahrungen mit Java und anderen Programmiersprachen hast wäre *wenn im ersten Post genannt* zu einem völlig anderen Verlauf gekommen.
Worum ich dich allerdings immer noch bitten möchte : es nützt nichts wenn du im ersten Post einen Code in normalen Code-Tags postest und dann im nächsten den selben nochmal in HTML-Tags. Das nennt sich teilweiser Doppelpost und ist hier nicht so gerne gesehen. Worum ich dich also bitten möchte ist das du in deinem ersten Post die CODE-Tags in HTML-Tags änderst und im zweiten den Code komplett rausnimmst da es wie gesagt sonst doppelt vorhanden ist. Das ist doch unnötiger Aufwand wenn sich jemand zwei Source-Codes durchliest und am Ende feststellt das es ein und der selbe ist ... das möchtest du doch sicher auch nicht. Außerdem siehts einfach besser aus.

Was nun deinen eigentlichen Port betrifft : na türlich ist es möglich dieses Script nach Java zu portieren. Allerdings wirst du hier um eine GUI *graphical user interface = grafische Benutzeroberfläche* nicht herum kommen da du sonst nur die Logik ohne Ein- oder Ausgaben hättest. Und das bringt es dir dann nicht wirklich wenn du es über die Console startest wenn deine Logik nichts zu tun hat. Dann ist das ganze Programm innerhalb weniger Augenblicke wieder beendet.

Nun also die Frage : hast du dich schon mal mit GUI-Design in Java beschäftigt ? Denn das ist eine wichtige Grundlage für diese Aufgabe. Falls nicht würde ich dich bitten das du versuchst dich selbst ersteinmal in dieses Thema einzuarbeiten. Bei Problemen oder Dingen die du nicht verstehst werden wir dir dann gerne weiterhelfen.

Ich wollte dich mit meinem Post nicht angreifen ... aber ich war so dierekt weil ich persönlich von deinen Posts davon ausgegangen bin das es nur eine Art Job-Angebot nach dem Motto : hier habt ihr und nun macht mal ... war.
 
Ich hab die Tags jetzt geändert.

Zu Schell:
Das ist für mich, aber speziell zur Klausurvorbereitung gedacht, deswegen spielt C oder C++ hier keiner Rolle, hätte ich sonst auch bevorzugt.

Zu Spikee:
Bei meiner letzten Aufgabe konnte ich in die Konsole z.B. 5 tippen, dann hat er mir die jeweiligen Nährwerte ausgespuckt, nach dem Motto: Schritt 1: ... Schritt 2: ...
Der Text soll im Quellcode bei der jetzigen Aufgabe enthalten sein, z.B. so wie in der folgendenden main Klasse ( wir könnten diese ja so verwenden )
Java:
public class Textstatistik { public static void main(String [] arg) {
  String textString = 
"Herr Bundespräsident, Herr Ministerpräsident, Herr Landtagspräsident, Herr Kardinal, lieber
Herr Zehetmair und lieber Freund Theo Waigel! Während ich mir die Reden anhöre, gingen
meine Gedanken in vergangene Zeiten zurück, und ich fragte mich: 'Wann warst du zum
ersten Mal in München?' Wenn ich mich recht entsinne, war das Ende März 1945. Ich war
damals gerade 15 Jahre alt und ich befand mich als Flaghelfer in Berchtesgaden. Wir fuhren
an einem Tag von Berchtesgaden nach München, um etwas dorthin zu transportieren. Ich
kannte München noch nicht und meine erste Begegnung mit der Stadt war ein Schock, denn
sie war ein einziger Trümmerhaufen. Angesichts dieses Elends sahen weder wir Kinder noch
die Erwachsenen eine positive Zukunft. Doch wir haben es geschafft! Diese großartige
Generation meiner Eltern, der Großeltern und vielleicht der Urgroßeltern verzweifelte trotz
allem nicht.";
  Text txt = new Text( textString);
  txt.printWordFreqStat();
  }
}
Zur Laufzeit des Programms sollte der Text dann in einer Variable vom Typ String stehen.
Wir haben noch nie etwas mit Guis gemacht ( wenn so simple Ein- und Ausgaben auf der Konsole nicht dazu gehören), aber ich werde mich aus Interesse gleich einlesen.
 
Nein ... alles was sich in der Console abspielt gehört NICHT zu einer GUI ... da wie der Name schon sagt ... das nicht GRAFISCH ist. Das ihr noch nichts mit GUI gemacht hab und du dir dann selbst so ne Aufgabe stellst ... nun ja ...

Aber mal erlich : es ist eine schlechte angewohnheit alles erst in JavaScript zu schreiben und dann mit Ach und Krach nach java zu porten. Das verschließt dir viele Möglichkeiten wie Threads und Sockets ... gewöhne dir das also lieber wieder ab und fange an dich daran zu gewöhnen gleich in Java zu arbeiten.

Was deinen Code oben angeht : das Highlighting sieht sehr komisch aus ... versuche mal dieses "<![CDATA[" und das "//]>" rauszunehmen *was im übrigen NICHT notwendig ist sondern nur von einigen Editoren automatisch eingefügt wird ... laut W3C aber nicht koform* ... vielleicht sieht es dann etwas anders aus.
 
Ich mache das nicht wegen Abgabezwecken oder Ähnlichem, aber auf Hinweis eines Professors, die Aufgabe, die ich zuvor programmiert habe, wie die davor mit dem Newton Verfahren umzuschreiben.
Ich bin davon ausgegangen, dass alles in der Konsole nichts mit einer GUI zu tun hat.
Die Aufgabe soll eine Ausgabe auf der Konsole ausgeben, der Input liegt ja sozusagen schon vor.
Wenn jemand eine Idee hat, wie man am besten vorgehen könnte, wär das schonmal sehr hilfreich, weil ich nicht weiß, wie ich die Aufgabe anpacken soll.
 

Neue Beiträge

Zurück