Wczytywanie liczb z pliku do tablicy i wyświetlenie jej zawartości

0

Cześć,
napisałem program wczytujący z pliku liczby w tablicę,ale nie wiem jak wyświetlić jej zawartość bo wypisuje mi tą tablicę tyle razy ile jest elementów tablicy:

import java.io.*;
public class aiz2 
{
    public static void main ( String[] args) {
        int wartosc=0,l1,l2;
        int [] licz=new int[10];

        try{
            FileReader fr = new FileReader("c:/pierwsze.txt");
            StreamTokenizer st = new StreamTokenizer(fr);
        }
        } catch(Exception e){
            System.out.println("Błąd "+e);
        }
    }
}

Z góry dzięki za pomoc;)

zmiana tematu wątku + sformatowanie kodu - fp

1
int[] tabLiczb = new int[5];
		try{
			FileReader fr = new FileReader("//home//marcin//Liczby.txt");
			StreamTokenizer st = new StreamTokenizer(fr);
			
			int i=0;
			while(st.nextToken()!= StreamTokenizer.TT_EOF){
				tabLiczb[i] = (int)st.nval;
				i++;
			}
		}
		catch(Exception e){
			System.out.println("Błąd "+e);
		}
		for(int i=0; i<tabLiczb.length; i++){
			System.out.println(tabLiczb[i]);
		}
 

Liczby.txt

 
1
2
3
4
5
0

Po co te i++? Po każdym przejściu przez pętle for zmienna i, zostanie zwiększona przez i++ w forze, nie musisz jej zwiększać w ifie i elsie. Bo wtedy jak chcesz dodać element np licz[0] to przeskakuje Ci w ifie bądź elsie na licz[1] jeszcze przed przejściem do następnej iteracji. I w momencie następnej iteracji przypisujesz nie do licz[1] tylko do licz[2];

       l1=(int)st.nval;
         for(i=0;i<licz.length;i++)
         {
             if(licz[i]!=l1)
         {    
             licz[i]=l1;
 
         }
         }
0

To nadal nie rozwiązuje mojego problemu bo cały czas mam duplikaty liczb w tablicy

0

Pokaż aktualny kod.

0
import java.io.*;
public class aiz2 
{
    public static void main ( String[] args) {
      
        int wartosc=0,l1;
           int [] licz =new int[7];
        int i=0,j=0;
try{
   FileReader fr = new FileReader("c:/pierwsze.txt");
   StreamTokenizer st = new StreamTokenizer(fr);
   while( st.nextToken() != StreamTokenizer.TT_EOF ){
          l1=(int)st.nval;
         for(i=0;i<licz.length;i++)
         {
             if(licz[i]!=l1)
             {    
                 licz[i]=l1;
             }
        }
        System.out.println(licz[j]);
       j++;   
   }
} catch(Exception e){
   System.out.println("Błąd "+e);
}    
}
} 
0

Kod jest koszmarnie sformatowany, program wysypie jeśli plik zawiera więcej niż 7 liczb. Ponadto ma bez sensowną wewnętrzną pętlę.

import java.io.*;
public class aiz2 
{
    public static void main ( String[] args) 
    {
        int [] licz = new int[7];
        int j=0;
        try
        {
            FileReader fr = new FileReader("c:/pierwsze.txt");
            StreamTokenizer st = new StreamTokenizer(fr);
            while(st.nextToken() != StreamTokenizer.TT_EOF )
            {
                licz[j] = (int)st.nval;
                System.out.println(licz[j]);
                j++;   
            }
        }
        catch(Exception e)
        {
            System.out.println("Błąd "+e);
        }
        for(j=0;j<licz.length;j++)
        {
            System.out.print(licz[j]+",");
        }        
    }
}
0

Tak,wiem że się wysypie.Twoje rozwiązanie zapisuje mi liczby do tablicy i je wypisuje(wszystkie). A mam napisać program,w którym jeżeli dana liczba powtarza się to zostaje wyświetlona tylko raz,a nie kilkukrotnie ;)

0

Nie uważasz, że należało to napisać w pierwszym poście?

0

Odpowiedz na pytanie zawarte w pierwszym poście otrzymałem trochę wcześniej,a nie chciałem spamować i zakładać nowego tematu ;)

0

Poniższy kod działa dla dowolnej ilości liczb w pliku.

import java.io.*;
import java.util.*;
public class aiz2 
{
    public static void main ( String[] args) 
    {
        ArrayList<Integer> liczby = new ArrayList<Integer>();
        try
        {
            FileReader fr = new FileReader("c:/pierwsze.txt");
            StreamTokenizer st = new StreamTokenizer(fr);
            while(st.nextToken() != StreamTokenizer.TT_EOF )
            {
                int liczba = (int)st.nval;
                if(!liczby.contains(liczba))
                {
                    liczby.add(liczba);
                }
            }
        }
        catch(Exception e)
        {
            System.out.println("Błąd "+e);
        }
        for(int j=0;j<liczby.size();j++)
        {
            System.out.print(liczby.get(j)+",");
        }        
    }
}

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