Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [Java]

    ho scritto una classe che ha due file di testo in ingresso e copia due sottostringhe di un file nell'altro.
    quando lo eseguo mi dice che non reisce a trovare la classe main.
    non sono molto esperto...ma non ne capisco il perché
    chi mi dà una mano?

    codice:
    import java.io.*;
    
    class instanceCreator {
    	private BufferedReader inRdf;				
    	private BufferedWriter outRdf;
    	
    	instanceCreator (String inFile, String outFile){
    		
    	    try {
    	      inRdf = new BufferedReader(new FileReader(inFile));		
    	      outRdf = new BufferedWriter(new FileWriter(outFile));
    	      } catch(IOException e) {e.printStackTrace();}
    	  }	
    	
    	//Metodo complete
    	void complete()	{
    	
    		try{
    			String inputLine = inRdf.readLine();
    			int beginInd = 0;
    			int apartInd = inputLine.indexOf("@");
    			int vdoInd = apartInd+1;
    			String ns = inputLine.substring(beginInd, apartInd);
    			String vdo = inputLine.substring(vdoInd);
    			
    			outRdf.write(ns);
    			CharSequence csq = vdo;
    			outRdf.append(csq);
    			
    			inRdf.close();
    			outRdf.close();
    			outRdf.flush();
    		} catch(IOException e) {e.printStackTrace();}
    	}
    
    class testInstance {
    	public void main(String[] args) throws IOException  {
    	    if(args.length != 2) {
    	      System.out.println("Please enter <inFile>, <outFile>");
    	      System.exit(1);
    	    }
    	    
    	    instanceCreator fileRDF = new instanceCreator(args[0],args[1]);
    	    fileRDF.complete();
    	}	  
    }
    }

  2. #2
    devi scrivere public static void main(String[] args) non public void main(String [] args)

  3. #3
    non h risolto le cose. quando effettuo il debug ci sono due breakpoint alle righe:
    codice:
    -void complete() {
    -public static void main(String[] args) throws IOException {
    inoltre quando eseguo mi appare l'errore:
    "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)

  4. #4
    non ha risolto le cose.
    quando effettuo il debug ci sono due breakpoint alle righe:
    codice:
    -void complete() {
    -public static void main(String[] args) throws IOException {
    inoltre quando eseguo mi appare l'errore:

    "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at instanceCreator-complete(instanceCreator.java:26)
    at testInstance.main(instanceCreator)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    leggi quello che dice, è molto chiaro riguardo al messaggio:

    String index out of range: -1

    significa che ti stai riferendo ad un indice non valido della stringa (in dettaglio -1).
    Gli indici della stringa partono da 0.
    Controlla cosa fai alla riga 26, suppongo sia una di queste due

    codice:
    String ns = inputLine.substring(beginInd, apartInd);
    String vdo = inputLine.substring(vdoInd);
    e controlla che tutti gli indici siano validi (anche facendo una banale System.out.println(index) )

    ps le cose le ha risolte, perché prima non partiva e ora si.
    La classe con il main dovrebbe essere pubblica

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Il titolo delle discussioni non è un optional. Al contrario, è richiesto dal Regolamento interno.

    Lo aggiungo io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    chiedo venia per il titolo, ma ero convinto di averlo inserito.

    ho risolto la questione della stringa ed ora non mi dà più quell'errore...ma me ne dà comunque un altro:

    330
    Exception in thread "main" java.lang.NullPointerException
    at instanceCreator.complete(instanceCreator.java:36)

  8. #8
    dimenticavo, nel frattempo ho modificato alcune cose. il nuovo codice è
    codice:
    import java.io.*;
    
    class instanceCreator {
    	private BufferedReader inRdf, outRead;				
    	private BufferedWriter outRdf;
    	
    	instanceCreator (String inFile, String outFile){
    		
    	    try {
    	      inRdf = new BufferedReader(new FileReader(inFile));
    	      outRead = new BufferedReader(new FileReader(outFile));
    	      outRdf = new BufferedWriter(new FileWriter(outFile));
    	      } catch(IOException e) {e.printStackTrace();}
    	  }	
    	
    	//Metodo complete
    	void complete() {
    		
    		try{
    			String inputLine = inRdf.readLine();	
    			int beginInd = 0;
    			int apartInd = inputLine.indexOf("@");
    			int vdoInd = apartInd+1;
    			
    			String ns = inputLine.substring(beginInd, apartInd);
    			String vdo = inputLine.substring(vdoInd);
    			
    			outRdf.write(ns);
    			CharSequence csq = vdo;
    			outRdf.append(csq);
    			
    			String outputLine = outRead.readLine();
    			outputLine.replaceAll("%","\n");
    			
    			inRdf.close();
    			outRead.close();
    			outRdf.close();
    			outRdf.flush();
    		} catch(IOException e) {e.printStackTrace();}
    	}
    }
    class testInstance {
    	public static void main(String[] args) throws IOException  {
    	    if(args.length != 2) {
    	      System.out.println("Please enter <inFile>, <outFile>");
    	      System.exit(1);
    	    }
    	    
    	    instanceCreator fileRDF = new instanceCreator(args[0],args[1]);
    	    fileRDF.complete();
    	}	  
    }

  9. #9
    Originariamente inviato da kob4yashi
    "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at instanceCreator-complete(instanceCreator.java:26)
    at testInstance.main(instanceCreator)
    Evidentemente non tutte le righe del file contengono il carattere @
    visto che hai scritto:
    codice:
    			int apartInd = inputLine.indexOf("@");
    			int vdoInd = apartInd+1;
    			
    			String ns = inputLine.substring(beginInd, apartInd);
    Il metodo indexOf restituisce -1 se il parametro attuale non è contenuto nell'istanza su cui viene invocato.

  10. #10
    si ma infatti quell'errore è risolto. il file contiene un'unica lunga riga contenente un solo carattere "@" che mi serve per scinderla e riscrivere le due parti nel nuovo file.

    solo che ora mi visualizza un altro tipo di errore...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.