Hilfe bei Java-Applikation zur Erfassung von IT-Nachrichten

Bin ich zu blöd für Java

  • Ja klar!

    Stimmen: 0 0,0%
  • Logisch!

    Stimmen: 0 0,0%
  • hä? [added by stevg]

    Stimmen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    31
Status
Nicht offen für weitere Antworten.

Kona

Mitglied
Hallihallo,
ich hab leider ein Problem, aber das könnt ihr euch wohl schon denken, wenn man so meinen Thread nur überfliegt.
Also, folgendes liegt vor:

Ich habe unvorsichtigerweise eine Java-Projektarbeit gewählt, obwohl ich erst in diesem meinem aktuellen Semester das erste Mal Java-Quellcode getippt hab. So blicke ich jetzt auf stolze zweieinhalb Monate Erfahrung zurück (yeah!) und muß mich jetzt langsam irgendwelchen höheren Compiler-Weltern geschlagen geben.

Meine Projektarbeit umfaßt eine Apllukation zur Erfassung von IT-Nachrichten. Hört sich bescheuert an, ist es aber auch.
Quellen für die News sollen folgende Sites sein: www.heise.de, www.pc-magazin.de, www.computerwoche.de und www.chip.de

Ich habe zum Ausprobieren erstmal den Link zu meiner eigenen Homepage gebraucht um zu sehen, ob es überhaupt geht. Ich habe innerhalb der Projektgruppe die Teilaufgabe zur Herstellung der Verbindung übernommen. Normalerweise kommt mein Teil ohne eine Anzeige aus, aber im Probelauf muß ich es ja anzeigen können, doch der Probelauf funktioniert nicht. Ich poste jetzt mal den Code, möchte aber noch mein Problem schildern.

Ich kann zwar einen File einlesen, aber ich komme nicht so weit, die Links aus dem File einzeln herauszulesen. Es gelingt mir nicht, den File bzw. den String in ein Label zu übetragen und anzuzeigen. Darüber hinaus bekomme ich eine nette kleine NullPointerException (wieso überhaupt Pionter, wenn Java keine Zeiger hat, hä?) wenn ich versuche, die herausgefilterten Zeilen in einem Stringarray zu speichern. Doch seht selbst, was ich bisher zu WEge gebracht habe (ich weiß selber, daß es 1.) wenig ist und 2.) nicht geht, aber deswegen bin ich ja hier.)

Danke schonmal im Voraus an diejenigen, die das ganze ernst betrachten für ihre Mühe. Und ein herzliches "Ich hab euch auch lieb" an alle die jetzt meinen, hier ein "Haha, Coding-Noob" oder ähnlich hilfreiches reinzuschreiben. 🙂*

Code:
package ProjectSchool;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class connection {
    public static void main(String[] args) {
       String adress=new String("http://www.polyskope.de/news.html");
       PageFrame page = new PageFrame(adress);
       page.show();
	   /* folgendes Panel wurde nur zum Test eingebaut, ob überhaupt noch irgendetwas funktioniert.
		*/
       JPanel pane=new JPanel();
       JLabel status=new JLabel("Testlabel");
       pane.setLayout(new GridLayout(0,1));
       pane.add(status);        
    }
}

class PageFrame extends JFrame {
    JTextArea box = new JTextArea("Getting data ...");
    URL page;

    public PageFrame(String address) {
        super(address);
        setSize(600, 300);
        JScrollPane pane = new JScrollPane(box);
        getContentPane().add(pane);
        WindowListener l = new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        };
        addWindowListener(l);

        try {
            page = new URL(address);
            getData(page);
        } catch (MalformedURLException e) {
            System.out.println("Bad URL: " + address);
        }
    }
    
    void HTMLCompare (String lineall) {
        String line=lineall;
        int i=0;
        String sub[]=null;
        int all=line.length();
        int pos1=0;
        int pos2=0;
        do {           
            pos1=line.indexOf("<a", pos2);        
            pos2=line.indexOf("a>", pos1);
            System.out.println(pos1);
            System.out.println(pos2);
            System.out.println(all);
			/* in folgenden Codezeilen vermute ich die Ursache für die NullPointerException
			 */
            if (pos1!=-1&&pos2!=-1) {	        	    
                sub[i]=line.substring(pos1, pos2+2);
                System.out.println(sub[i]);
				box.setText(sub[i]);
                i++;
            	}else { 
            	    break;
            	}        	
        }while(pos2<all);
        
    }

    void getData(URL url) {
        URLConnection conn = null;
        InputStreamReader in;
        BufferedReader data;
        String line;
        StringBuffer buf = new StringBuffer();
        try {
            conn = this.page.openConnection();
            conn.connect();
            box.setText("Connection opened ...");
            in = new InputStreamReader(conn.getInputStream());
            data = new BufferedReader(in);
            box.setText("Reading data ...");
            while ((line = data.readLine()) != null)
                buf.append(line + "\n");
            box.setText(buf.toString());
            HTMLCompare(buf.toString());
        } catch (IOException e) {
            System.out.println("IO Error:" + e.getMessage());
        }
    }

}

Ich bedanke mich für Ihre Aufmerksamkeit.
Wir kommen nun zum Wetter - nach der Werbung 😉
 
Code:
 String sub[]=null;
        [...]
        do {           
            [...]
            if (pos1!=-1&&pos2!=-1) {                 
                sub[i]=line.substring(pos1, pos2+2);

"sub" ist null, wenn du einen Array verwenden möchtest, musst du ihn zuerst herstellen.
Code:
sub = new String[ 123 ];

Wenns dynamisch sein soll, leistet auch eine Liste gute Dienste:
Code:
Vector sub = new Vector();
do{
  ...
  if( ... )
    sub.add( line.substring(...) );

String[] array = (String[])sub.toArray( new String[ sub.size() ]);
 
Hoi,

bei der NullPointerException kann ich Dir helfen.

Du legst hier ein Stringarray an.
Code:
    String sub[]=null;

Aber Du besorgst nirgedwo Speicher.
So was wie:

Code:
    sub = new String[50]; // besort Speicher für 50 Strings

Mehr hab ich auf die schnelle jetzt auch nicht gefunden.

greetz
SLi

// EDIT: Zu langsam :bae:
 
Hi,
kennst Du RSS. Solltest Du, wenn es um sammeln von Nachrichten geht kennen.

Mehr Info dazu unter http://de.wikipedia.org/wiki/RSS

In dieselbe Kategorie fallen auch RDF und ATOM. Es handelt sich dabei um XML-Dateien, die von den Websiten angeboten werden in denen ihre News aufgeführt sind.

Z.B.:
Heise > http://www.heise.de/newsticker/heise.rdf
Computerwoche > http://www.computerwoche.de/rss/news.xml
PC-Magazin > http://www.pc-magazin.de/common/rss/rss.php?r=all
Chip > http://www.chip.de/rss_news.xml

XML-Format ist viel einfacher zu parsen als HTML und der Inhalt ist auch geformt. Es gibt wahrscheinlich Java-Bibliotheken, die die NewsFeed bearbeiten können.

Diese Funktion würde ich auf jeden Fall mit einbauen.
 
Ey cool, das mit dem RSS werd ich mir mal genauer anschauen.
Vielen Dank für eure Tips, ich werd das mal weiter versuchen.
 
*Gnarf*
Ich mach gleich ne neue Umfrage:
"Bin ich zu blöd mich einzuloggen?" *gg*
Naja, wenn ich nochmal festhänge weiß ich ja jetzt, wo ich die Experten finde.
 
wow, was für ein feeling, hab grad bei der schrägsten Umfrage meines Lebens mitgemacht 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben