Du kannst eine Instanz eines FileWriters in mehreren Methoden verwenden, in dem du ihn als Feld der Klasse definierst und im Konstruktor oder am Anfang der Methode erstellst.

public class Output implements Closeable {
private BufferedWriter _writer = null;
public Output() {
_writer = new BufferedWriter(new FileWriter("file.txt"));
}
public void Method1(String line) {
_writer.write(line, 0, line.length);
}
public void Method2(char sign) {
_writer.write((int) sign);
}
public void close() {
_writer.close();
}
}

Wie dir in dem Beispiel vielleich auffällt, musst du dich in diesem Fall selbst um das Schließen des File-Handles kümmern. Das wird normalerweise über das Interface Closeable oder AutoCloseable gelöst.

Du kannst es allerdings auch pro Methode machen. Ein Blick in die Doku zeigt, dass FileWriter ein Argument für das Anhängen an Dateien hat.

public static void WriteMethod(String line) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt", true))) {
writer.write(line, 0, line.length);
}
catch (IOException ex)
{
System.err.println("Error on writing file");
}
}

Hier wird der Writer bei jedem Methodenaufruf angelegt, die Zeile wird geschrieben, in dem sie an eine vorhandene Datei angehangen wird bzw. an eine neu erstellte, wenn keine Datei vorhanden war. Danach wird der Writer automatisch geschlossen und das Handle geschlossen.

...zur Antwort
listBox.AddRange(Directory.EnumerateFiles(sourceDirectory, "*.mp3", SearchOption.AllDirectories));

Ich würde dir raten keine Rootverzeichnisse anzugeben. Erstens dauert es extrem lange und es werden viele Ordner durchsucht, welche keine Musikdateien enthalten. Mal abgesehen davon, dass die Wahrscheinlichkeit steigt, dass der Anwender auf manche Dateien / Ordner keinen Zugriff hat.

...zur Antwort

Es gibt Tools, mit deren Hilfe du den Netzwerkverkehr aufzeichnen kannst. Eines dieser Tools wäre das Programm "Wireshark".

Mich würde allerdings nicht wunder, wenn die Verbindungen irgendwie verschlüsselt werden und du somit wenig über den Inhalt der Datenpakete herausfinden kannst.

...zur Antwort

Als erstes ist die folgende Abfrage + Zusweisung überflüssig:

if (betrag < 5000)
{
   ss=0;
}

Ansonsten hast du einen Datentyp gewählt, der ganzzahlige Werte enthalten kann. Was hier passiert ist folgendes: du hast die Variable "ss" (in Deutschland übrigens eine schlechte Bezeichnung für alles) vom Typ "int", die maximal "20" sein kann. Diese dividierst du durch "100". Da du "int" also einen ganzzahligen Datentyp genommen hast, wird auch eine ganzzahlige Division durchgeführt. D.h. 20 / 100 = 0,2 - da das Ergebnis eine ganze Zahl sein muss, wird alles nach dem Komma abgeschnitten. Ergo wird auf die Variable "zs" immer "0" geschrieben und dann ausgegeben.

Du solltest einfach den Datentyp deiner Variablen "ss" und "zs" gegen einen Datentyp für Fließkommazahlen austauschen. Das sind in Java z.B. "float" oder "double".

...zur Antwort

Um Rekursion zu verstehen, muss man als erstes Rekursion verstehen.

So oder so ähnlich war der Spruch. Wie gesagt, mittels Rekursion lässt sich dein Problem mit ein paar Zeilen lösen:

public static void Hide(string path, int depth)
{
if (depth == 0)
return;
var dir = Directory.CreateDirectory(Path.Combine(path, Path.GetRandomFileName()));
Hide(dir.FullName, depth - 1);
}

Ich habe mir mal die Freiheit genommen und einen zufälligen Namen generieren lassen. Falls du ein anderes System bevorzugst, müsstest du das anpassen.

...zur Antwort

Du kannst den Operator && nur für boolische Datentypen verwenden.

Falls du zwei Zahlen per UND verknüpfen willst, musst du den Operator & verwenden. Dieser für dann allerdings ein bitweises UND durch, kein logisches.

In deinem Fall willst du in der Bedingung auch keine Zuweisung, sondern einen Vergleich machen. Deshalb musst du den Gleichheitsoperator == verwenden.

...zur Antwort
BlueJ - illegal start of expression. Wo liegt der Fehler?

Hallöchen, wir habe in der Schule vor kurzem mit dem Programmieren angefangen und dazu benutzen wir "BlueJ" und die Klassenbibliothek "Stifte und Mäuse".

Nun habe ich allerdings ein Problem und weiß nicht mehr weiter: In der Klasse Polygon bekomme ich in der Zeile mit "public void zeichne()" eine Fehlermeldung und zwar "illegal start of expression".

import sum.kern.*;

public class Polygon
{
    // Referenzen
    Stift meinStift;
    Polygon meinPolygon;
    Polygon meinPolygon1,meinPolygon2;

    // Konstruktor
    public Polygon(int pN,int pLaenge,int pHPosition,int pVPosition,int pWinkel)
    {
        // Objekte
        meinStift = new Stift();
        this.zeichne(pN, pLaenge, pHPosition, pVPosition, pWinkel);

        // Methoden
        public void zeichne() 

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
    }
}

Und die oben genannte Klasse Polygon soll auf die Klasse Steuerung "basieren". Liegt vielleicht hier der Fehler?

import sum.kern.*;

public class Steuerung
{
    // Referenzen
    Bildschirm meinBildschirm;

    // Konstruktor
    public Steuerung()
    {
        // Instanzvariable initialisieren
        meinBildschirm = new Bildschirm(800, 800);

        //methoden

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
    }
}

Ich würde mich sehr freuen, wenn mir jemand helfen würde.

...zum Beitrag

Was soll der Code bewirken?

// Methoden
public void zeichne()

Soll die Methode zeichne hier aufgerufen oder definiert werden? Entscheide dich für eins und halte dich an die entsprechende Syntax.

Falls du sie definieren / implementieren willst, musst du das außerhalb des Konstruktors tun.

...zur Antwort

Hast du schon mal in die Dokumentation von "Console.Read()" gesehen? Ich denke nicht.

Auszug aus der Doku:

Reads the next character from the standard input stream.

Das Zeichen, welches von der Eingabezeile gelesen wird, wird dann über das Standardencoding in einen int umgewandelt. Meines Wissens ist das im .NET-Framework UTF-16.

Wenn du dir dann eine Zeichentabelle ansiehst, wirst du feststellen, dass die Ziffern 0 - 9 mit den Zahlen (dezimal) 48 - 57 codiert sind.

Das entspricht nicht deinem Minimum bzw. Maximum und die musst immer eine neue Zahl eingeben. An dieser Stelle musst du also die entsprechenden Codes abfragen oder konvertieren.

Edit: Link zur Doku - https://msdn.microsoft.com/en-us/library/system.console.read%28v=vs.110%29.aspx

...zur Antwort

Einfache Antwort: gar nicht. An einer Stelle muss eine Schleife genutzt werden. Ob diese jetzt von dir kommt oder von einem Framework sei erstmal dahingestellt.

Als erstes solltest du, wie bereits erwähnt, abbrechen wenn etwas gefunden wurde:

if(gegner.Any(g => g.Bounds.Intersect(spieler.Bounds)))
MessageBox.Show("Tot");

Damit hast du die Schleife durch eine Linq-Anweisung ersetzt. Damit ist in deinem Code keine Schleife mehr. Die Realisierung wird allerdings per Enumerator und Schleifen gemacht.

Als nächstes könntest du das in eine PLinq-Anweisung umbauen:

if(gegner.AsParallel().Any(g => g.Bounds.Intersect(spieler.Bounds)))
MessageBox.Show("Tot");

Den Performancegewinn (falls es einen gibt) solltest du messen und testen. Wie angedeutet kann es sein, dass es keinen oder nur einen kleinen gibt.

Ansonsten kannst du versuchen die Liste möglichst klein zu halten. Du könntest z.B. nur die Gegner in der Liste halten, die im sichtbaren Bereich sind oder im gleichen "Raum" wie der Spieler. Das kommt dann aber etwas auf das Spiel an sich an.

...zur Antwort

Verstehst du das Diagramm überhaupt? Weißt du, was die einzelnen Zeichen / Wörter bedeuten? Falls nein, wäre das wohl der erste Schritt. Danach ist es einfach nur abschreiben bzw. "übersetzen" in Java Syntax. Diese solltest du auch schon kennen, wenn ihr mit BlueJ arbeitet.

...zur Antwort

Du kannst einen Timer starten, der nach einer gewissen Zeit dein Objekt wieder unsichtbar macht. Das sollte zusätzlich bei "KeyDown"-Event ausgeführt werden. Ich nehme an, dass du mit Windows Forms arbeitest, also bietet sich der Timer aus dem Namespace "System.Windows.Forms.Timer".

Ein Beispiel könnte so aussehen:

var timer = new Timer();
timer.Interval = Timespan.FromSeconds(5).Milliseconds;
timer.Tick += (obj, args) =>
{
myObject.Visible = false;
timer.Stop();
};
timer.Start();

MSDN: https://msdn.microsoft.com/en-us/library/system.windows.forms.timer%28v=vs.110%29.aspx

...zur Antwort

Das Schlagwort hierbei ist IBIS (Integriertes Bordinformationssystem). In den Bussen/Bahnen sind heutzutage meist PCs verbaut, die dann eine ensprechende Software installiert haben, die diese Vorgänge automatisch regelt.

Die Datenübertragung wird dann meist mit GPRS (LTE, HSPA, UMTS,..) gemacht.

...zur Antwort

Jetzt wäre die Programmiersprache ganz hilfreich gewesen.

In den meisten Hochsprachen, wie Java oder C#, gibt es Klassen für das "Scheduling". Das heißt, dass man bestimmte Aufgaben nach einer gewissen Zeit ablaufen lassen kann und wenn man will, werden diese auch in gewissen Intervallen wiederholt.

Du müsstest in einer dieser Sprachen also nur einen Job (meistens mit einer Klasse mit einem Name wie "Thread" oder "Task") erzeugen, in den Scheduler packen und dann warten, dass er ausgeführt wird.

...zur Antwort
if(PlayerCol instanceof ArrayList) {
ArrayList someList = (ArrayList)PlayerCol;
}

Das könnte man natürlich machen. Man könnte auch den Vorschlag von NoHumanBeing befolgen.

Die wichtigere Frage hierbei ist allerdings - Warum willst du dass machen? Die Klasse ArrayList definiert nur sehr wenige Methoden, die nicht im Interface List enthalten sind. Nimm es mit bitte nicht übel, wenn meine erste Vermutung ist, dass du diese Methoden bzw. deren Anwendungsfälle nicht kennst.

Ich nehme einfach mal an, dass du einige Aspekte der objektorientierten Programmierung noch nicht verstanden hast und deswegen diese Frage so formuliert hast. Wie bei den meisten Fragen, die ich hier lese, wäre ein wenig Kontext hilfreich, um dir eine einfachere / praktikablere Lösung aufzuzeigen.

Wie gesagt, du kannst auch einfach ohne Verstand eine diesere Lösungen abschreiben und weitermachen.

...zur Antwort

Falls beim Empfänger ein Paket ankommt, bei dem die Prüfsumme nicht mit dem Inhalt des Datenpaketes übereinstimmt, dann wird dieses Paket verworfen. Im Gegensatz zu TCP wird der Sender darüber nicht informiert und das Paket wird nicht erneut gesendet.

...zur Antwort

Was bringt dir die Antwort auf diese Frage? Die häufigsten (und wahrscheinlich einzigen) Antworten werden sein: über Tutorials (als Video oder Text), über Bücher, in der Schule / Studium oder vllt über einen Kurs an der Volkshochschule. Selbst wenn du das dann weißt, heißt das noch lange nicht, dass es dir am Leichtesten fällt, diesen Weg auch zu gehen.

es sollte auch nicht zu kompliziert geschrieben sein, da ich noch ein Kind bin und so extrem schwierig formulierte Sachen evtl. nicht verstehen werde

Natürlich gibt es Sachen, die du nicht verstehst. Das ist gut so, ansonsten würdest du ja auch nichts oder nur wenig lernen. Dabei ist es auch egal, ob du 12, 32 oder 52 bist. Das wichtige ist, dass du dran bleibst und trotzdem versuchst, diese Sachen zu begreifen.

Du hast als Lektüre "Java ist eine Insel" genannt. Dieses Buch bietet einen guten Einstieg in die Programmierung mit Java. Warum suchst du dann noch ein anderes Buch? Und welche Bücher du verstehen wirst, kann dir hier keiner beantworten.

...zur Antwort

Am einfachsten lässt sich das wohl mit einer Property erreichen. Diese kannst du dann abfragen oder setzen. Wenn es unbedingt eine Methode sein muss, die du zum Setzen verwenden möchtest, musst du eine anlegen. Beispiel:

public class MyClass
{
public bool Valid { get; private set; }
public void ToogleValid()
{
Valid = !Valid;
}
public void MakeValid()
{
Valid = true;
}
}

Über die Initialisierung der Property "Valid" brauchst du dir in deinem Fall keine Gedanken zu machen. Wahrheitswerte haben als Standardwert "false" und werden mit diesem initialisiert. Erst wenn du eine der Methoden aufrust, änderst du den Wert.

Du könntest auch die "Set"-Methode der Property "public" machen und bräuchtest somit keine extra Methode(n) zum Ändern dieser Property.

...zur Antwort

Deine Frage ergibt kaum Sinn und ist unverständlich.

Stell eine neue Frage oder stelle mehr Informationen zur Verfügung. Was willst du machen / was soll passieren? Was passiert / passiert nicht? Welche Build Tools Version / Android Version verwendest du?

...zur Antwort

Du hast "result" nicht initialisiert. Deshalb wird der Standardwert von "0" vergeben. Die Probleme, die die Division durch 0 mit sich bringt, sind dir vermutlich bekannt.

Ich würde dir empfehlen, es mittels Rekursion zu lösen:

public static double calculate(int n) {
   if (n == 0)
return 1; return 1f + 1f / calculate(n - 1); }

Falls du die Lösung per Iteration bevorzugst, musst du "result" einfach nur mit "1" initialisieren und es sollte funktionieren.

...zur Antwort

Deine "halbvollständigen Codezeilen" sind bescheiden lesbar und es bedarf einer Formatierung. Danach ist es ganz gut.

Du hast natürlich den wichtigsten Teil deines Codes weggelassen - die Klasse, die die Liste darstellt. Ich habe deswegen keine Ahnung und habe meine "eigene Version" davon programmiert. Es sollte allerdings mehr oder weniger ähnlich sein. Also erstmal das Gerüst:

public class MyList<T>
{
private class Node<T>
{
public T Data { get; private set; }
public Node<T> Next { get; set; }
public Node(T element)
{
Data = element;
}
}
public int Length { get; private set; }
private Node<T> Head { get; set; }
}

Wir haben also eine Liste aus Knoten, die jeweils gewisse Daten beinhalten und einen Nachfolger haben. Eine Liste besteht im Moment aus einem Anfangselement und der Gesamtlänge.

Falls du jetzt ein Element aus dieser Liste entfernen willst, was musst du dafür tun? Du durchsuchst jedes Element der Liste und falls du das entsprechende gefunden hast, musst du den Nachfolger an der Vorläufer anhängen. Ein paar Spezialfällge müssen dabei berücksichtigt werden, z.B. wenn sofort das erste Element das gesuchte ist.

public void Remove(T element)
{
Node<T> current, prev = null;
current = Head;
while (current != null)
{
if (current.Data.Equals(element))
{
if (current == Head)
Head = current.Next;
else
prev.Next = current.Next;
Length--;
return;
}
else
{
prev = current;
current = current.Next;
}
}
}

Der "Trick" ist, dass der Vorgänger immer mitgespeichert wird. So kannst du das vorherige Element mit dem Nachfolger des aktuellen verknüpfen und somit das aktuelle Element löschen. Für die Freigabe des Speichers ist dann der Garbage Collector verantwortlich.

...zur Antwort