Wczytywanie z pliku do vektora - stringa [Problem]

0

Witam.
Z góry chciałbym opisać cały problem mam plik w postaci:

  1. Zdanie numer 1.
    2.Zdanie numer dwa tralalal.
    3.Zdanie numer trzy itp itp.

Kod:

			File plik = new File("C:/Users/Dorka/Documents/uwagi/" + listaStudentow.elementAt(i).pesel + "_uwagi.txt");
				if (plik.exists())
				{
					Scanner wczytywanie_uwag=new Scanner(plik);

						while(wczytywanie_uwag.hasNext("[a-zA-Z_0-9] *"))
						{
							int numer_uwagi=wczytywanie_uwag.nextInt();	
						
								while (wczytywanie_uwag.hasNext("[a-zA-Z.,]*"))
								{
									InputStreamReader converter = new InputStreamReader(System.in);
									BufferedReader in = new BufferedReader(converter);
									String tresc_uwagi = "";
									tresc_uwagi = wczytywanie_uwag.next();
									uwagi.add(tresc_uwagi);
								}		
						}
					wczytywanie_uwag.close();
				}

Jednak nie osiągam wywołanego efektu:

Chce żeby funkcja uwagi.elementAt(x) zwracała mi poszczególne zdania a nie wyrazy. W obecnej sytuacji funkcja wygląda następująco :

uwagi.elementAt(0) = Zdanie
uwagi.elementAt(1) = numer
uwagi.elementAt(2) = 1.

Chce uzyskać coś takiego :

uwagi.elementAt(0) = Zdanie numer 1.

0

dodam jeszcze, że wektor jest standardowym:

public Vector<String> uwagi = new Vector<String>();

może tutaj też leżeć błąd

0

wrzuć cały plik w formie mini przykładu który sie uruchamia

0

mam 1000 z hakiem linijek a to jest jedna funkcja która się uruchomi :) wystarczy w file zmienć scięzke do pliku jakiegolwiek

Zawartość pliku

  1. Zdanie numer 1.
  2. Zdanie numer dwa dwa.
  3. Zdanie numer asdasdasdsa
0

File plik = new File("C:/Twoja/Sciezka/do/pliku/plik.txt");
if (plik.exists())
{
Scanner wczytywanie_uwag=new Scanner(plik);

                                            while(wczytywanie_uwag.hasNext("[a-zA-Z_0-9] *"))
                                            {
                                                    int numer_uwagi=wczytywanie_uwag.nextInt();       
                                           
                                                            while (wczytywanie_uwag.hasNext("[a-zA-Z.,]*"))
                                                            {
                                                                    InputStreamReader converter = new InputStreamReader(System.in);
                                                                    BufferedReader in = new BufferedReader(converter);
                                                                    String tresc_uwagi = "";
                                                                    tresc_uwagi = wczytywanie_uwag.next();
                                                                    uwagi.add(tresc_uwagi);
                                                            }               
                                            }
                                    wczytywanie_uwag.close();
                            }
0
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.JApplet;

public class Test80_zadania extends JApplet{   
public Vector<String> uwagi = new Vector<String>();
@Override public void start(){
        System.out.println("start");
        try {
            funkcja();
        } catch (FileNotFoundException ex) {
            System.out.println("error");
        }
        System.out.println("stop");
}
    
public void funkcja() throws FileNotFoundException{
    System.out.println("funkcja() start");
    File plik = new File("C:/plik.txt");
        if (plik.exists())  {
           System.out.println("plik.exists");
           Scanner wczytywanie_uwag = new Scanner(plik);
                while(wczytywanie_uwag.hasNext("[a-zA-Z_0-9] *"))  {
                    System.out.println("wczytywanie_uwag.hasNext");
                        int numer_uwagi=wczytywanie_uwag.nextInt();
                        while (wczytywanie_uwag.hasNext("[a-zA-Z.,]*"))
                        {
                                InputStreamReader converter = new InputStreamReader(System.in);
                                BufferedReader in = new BufferedReader(converter);
                                String tresc_uwagi = "";
                                tresc_uwagi = wczytywanie_uwag.next();
                                System.out.println("tresc_uwagi = "+tresc_uwagi);
                                uwagi.add(tresc_uwagi);
                        }
                }
            wczytywanie_uwag.close();
        }
    System.out.println("funkcja() stop");
}
}

tak powinien wygladac ow kod? jesli tak to "wczytywanie_uwag" nie ma kolejnego przedmiotu?

0
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.JApplet;

public class Test80_zadania extends JApplet{   
public Vector<String> uwagi = new Vector<String>();
@Override public void start(){
        System.out.println("start");
        try {
            funkcja();
        } catch (FileNotFoundException ex) {
            System.out.println("error");
        }
        System.out.println("stop");
}
   
public void funkcja() throws FileNotFoundException{
    System.out.println("funkcja() start");
    File plik = new File("C:/plik.txt");
        if (plik.exists())  {
           System.out.println("plik.exists");
           Scanner wczytywanie_uwag = new Scanner(plik);
                while(wczytywanie_uwag.hasNext("[a-zA-Z_0-9] *"))  {
                    System.out.println("wczytywanie_uwag.hasNext");
v
                        while (wczytywanie_uwag.hasNext("[a-zA-Z.,]*"))
                        {
                                InputStreamReader converter = new InputStreamReader(System.in);
                                BufferedReader in = new BufferedReader(converter);
                                String tresc_uwagi = "";
                                tresc_uwagi = wczytywanie_uwag.next();
                                uwagi.add(tresc_uwagi);
                        }
                }
            wczytywanie_uwag.close();
        }
    System.out.println("funkcja() stop");
}
System.out.println(uwagi.elementAt(0));
System.out.println(uwagi.elementAt(1));
System.out.println(uwagi.elementAt(2)); 

// To da Ci wynik Zdanie
// numer
// jeden
}

Chciałbym wrzucic do wszystko do jednego vektora i otrzymać w każdym wektorze zdania a nie tylko pojedyńcze stringi. Cyfry w pliku sa zabierane przez int numer_uwagi=wczytywanie_uwag.nextInt();

0

nie, chodzi mi o strukture :)

System.out.println("wczytywanie_uwag.hasNext"); //nie pojawia sie i pytam sie czy tak to ma wygladac?
0

ominąłeś:

int numer_uwagi=wczytywanie_uwag.nextInt();   

// ważne bo to właśnie szuka inta pierwszego. zrewidowałem troche zawartość pliku i powinno być tak

1 Pierwsze zdanie.
2 Drugie zdanie.
3 Trzecie zdanie.

Bez kropek po cyfrach

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.JApplet;

public class Test80_zadania extends JApplet{   
public Vector<String> uwagi = new Vector<String>();
@Override public void start(){
        System.out.println("start");
        try {
            funkcja();
        } catch (FileNotFoundException ex) {
            System.out.println("error");
        }
        System.out.println("stop");
}
   
public void funkcja() throws FileNotFoundException{
    System.out.println("funkcja() start");
    File plik = new File("C:/plik.txt");
        if (plik.exists())  {
           System.out.println("plik.exists");
           Scanner wczytywanie_uwag = new Scanner(plik);
                while(wczytywanie_uwag.hasNext("[a-zA-Z_0-9] *"))  {
                 int numer_uwagi=wczytywanie_uwag.nextInt();                    
                  System.out.println("wczytywanie_uwag.hasNext");
                        while (wczytywanie_uwag.hasNext("[a-zA-Z.,]*"))
                        {
                                InputStreamReader converter = new InputStreamReader(System.in);
                                BufferedReader in = new BufferedReader(converter);
                                String tresc_uwagi = "";
                                tresc_uwagi = wczytywanie_uwag.next();
                                uwagi.add(tresc_uwagi);
                        }
                }
            wczytywanie_uwag.close();
        }
    System.out.println("funkcja() stop");
}
System.out.println(uwagi.elementAt(0));
System.out.println(uwagi.elementAt(1));
System.out.println(uwagi.elementAt(2));

// To da Ci wynik Zdanie
// numer
// jeden
}

To powinno przejśc ale jest dalej ten sam manykament, że nie zdanie a pojedyńczczy string...

0

Dodaj może

  wczytywanie_uwag.useDelimiter("\n");
0

Możesz uprościć trochę funkcję 'funkcja':

 
	public void funkcja() throws FileNotFoundException {
		System.out.println("funkcja() start");
		File plik = new File("C:/plik.txt");
		if (plik.exists()) {
			System.out.println("plik.exists");
			Scanner wczytywanie_uwag = new Scanner(plik);
			while (wczytywanie_uwag.hasNextLine()) {
				String line = wczytywanie_uwag.nextLine();
				// tu można dodać obróbkę line, aby wyeliminować początkową liczbę.
				uwagi.add(line);
			}
			wczytywanie_uwag.close();
		}
		System.out.println("funkcja() stop");
	}

1 użytkowników online, w tym zalogowanych: 0, gości: 1