Pereiti prie turinio

Dėl java programavimo labaratoriniu darbu.


Rekomenduojami pranešimai

Ar galėtu kas padėti su vienu java programavimo uždaviniu. Užduotis tokia:

 

Tekste yra žodžiai atskirti bent vienu tarpu.

Ar tekste kartojasi pirmas žodis? Kiek kartu jis rastas?

Pašalintu šiuos besikartojančius žodžius (aišku, pirmas lieka).

 

Reikėtu padaryti kuo panašiau ir paprasčiau kaip mano prisegtame faile.

 

Už tinkama darbą galėčiau atsidėkoti swedbank kokia 10Lt nes darbas tikrai nėra sunkus tiesiog mokslai užspaudė nėra laiko gilintis :)

laboratorinis.rar

Nuoroda į pranešimą
Dalintis kituose puslapiuose

public class Test {

/**
	* Isskirsto sakinyje esancius zodzius ir sudeda i array
	* @param s  - sakinys isskirstymui
	* @return String[]
	*/
public static String[] isskirstyti(String s) {
	if (s.trim().length() == 0)
		throw new RuntimeException("Sakinys negali buti tuscias");
	return s.trim().split(" ");
}

/**
	* Patikrina ar sakinyje kartojasi pirma zodis
	* @param s - Sakinys
	* @return Pirmojo zodzio skaicius sakinyje (iskaitant pirma)
	*/
public static int kartojasi(String sakinys) {
	String[] s = isskirstyti(sakinys);
	int count = 1; // count = 0, jei nenorime itraukti pirmaji zodi
	String pirmasZodis = s[0];
	for (int i = 1; i < s.length; i++) {
		if (pirmasZodis.toLowerCase().equals(s[i].toLowerCase()))
			count++;
	}
	return count;
}

/**
	* Is sakinio pasalina pirmojo zodzio pasikartojimus
	* @param s  - Sakinys
	* @return Sutvarkyta sakini
	*/
public static String pasalinti(String sakinys) {
	String[] s = isskirstyti(sakinys);
	String sutvarkytas = s[0];
	String pirmasZodis = s[0];
	for (int i = 1; i < s.length; i++) {
		if (!pirmasZodis.toLowerCase().equals(s[i].toLowerCase()))
			sutvarkytas += " " + s[i];
	}
	return sutvarkytas;
}

public static void main(String[] args) {
	String sak = "Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit";
	System.out.println(kartojasi(sak)); // @return - 5
	System.out.println(pasalinti(sak)); // @return - Lorem ipsum dolor sit ipsum dolor sit ipsum dolor sit ipsum dolor sit ipsum dolor sit
}
}

 

Vienas paprasciausiu variantu.

 

Svarbu: pasikartojantis zodis negali tureti prie saves prisilietusio zenklo ("Lorem." netinka). Norint galima ideti nesudetinga metoda, kuris "apslifuotu" zodzius nuo zenklu darant patikra.

 

EDIT: Tavo duota pavyzdi paziurejau tik kiek veliau, bet tingiu ka nors tvarkyt :) Tad jei kodas atrodo norm ,tiesog padaryk, kad isskaitytas ir isskaidytas (isskirstyti();) eilutes is failo talpintu i String[][] ir atitinkamai pakoreguok metodus (loop in loop)

Redagavo Imago
Nuoroda į pranešimą
Dalintis kituose puslapiuose

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class TekstoTvarkymas {
private List<ArrayList<String>> sakiniai = new ArrayList<ArrayList<String>>();
private String pirmasZodis;

public TekstoTvarkymas(String pavadinimas) {
	String sakinys;
	Scanner scan = null;
	FileInputStream filein = null;
	try {
		filein = new FileInputStream(pavadinimas);
		scan = new Scanner(filein);

		while (scan.hasNext()) {
			sakinys = scan.nextLine();
			if (sakinys.length() > 0)
				sakiniai.add(new ArrayList<String>(Arrays.asList(sakinys
						.trim().split(" "))));
		}
		pirmasZodis = sakiniai.get(0).get(0).trim().split(" ")[0];
	} catch (IOException ex) {
		System.out.println("IO Error skaitant faila " + pavadinimas);
	} finally {
		if (filein != null)
			scan.close();
	}
}

public int pasikartoja() {
	int kartojasi = 0;
	for (int i = 0; i < sakiniai.size(); i++) {
		for (int j = 0; j < sakiniai.get(i).size(); j++) {
			if (sakiniai.get(i).get(j).toLowerCase().equals(
					pirmasZodis.toLowerCase())) {
				kartojasi++;
			}
		}
	}
	return kartojasi;
}

public void naikintiPasikartojimus() {
	System.out.println(pirmasZodis.equals(sakiniai.get(11).get(0)));
	for (int i = 0; i < sakiniai.size(); i++) {
		for (int j = 0; j < sakiniai.get(i).size(); j++) {
			if (i == 0)
				j++;
			if (sakiniai.get(i).get(j).toLowerCase().equals(
					pirmasZodis.toLowerCase())) {
				sakiniai.get(i).remove(j);
			}
		}
	}
}
}

 

Kuriant TekstoTvarkymas objektą, nurodome kelia iki failo su kuriuo norime dirbti. Konstruktorius automatiškai nuskaito visa failą ir sukelia žodžius pagal eilutes į ArrayList (galima padaryti, kad nebūtų inner array list, bet tokiu atveju neis išspausdinti teksto eilutėmis kaip originale).

 

pasikartoja() metodas gražina skaičių, kiek pirmasis žodis kartojasi tekste (įskaitant jį patį);

naikintiPasikartojimus() metodas, automatiškai iš teksto panaikina pasikartojimus;

 

p.s. kaip ir Imago sprendime, yra problema jeigu skirybos ženklai liečiasi prie žodžiu (truputi patingėjau ir to nesutvarkiau)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu bandžiau aš ten perdarinėt pagal šitas jūsu parašytas programas bet vistiek nesigauna man kažkaip. Ar galėtumėt tiesiog paredaguoti ta failą kurį imečiau. Nes reikia man kad būtu 2 klasės būtinai sakė ir išvis viska daryt ant jau padaryto to pavyzdžio nes tikrai nepatikės, kad pats padariau ypač dar su metodais kurių nesimokėm. :D Čia reikia nežinau kaip tik įmanoma paprasčiau nes čia tik galima sakyt supažindina mus su programa, bet biški persistengė dėstytojas. :)

Redagavo ChallengeR
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu bandžiau aš ten perdarinėt pagal šitas jūsu parašytas programas bet vistiek nesigauna man kažkaip. Ar galėtumėt tiesiog paredaguoti ta failą kurį imečiau. Nes reikia man kad būtu 2 klasės būtinai sakė ir išvis viska daryt ant jau padaryto to pavyzdžio nes tikrai nepatikės, kad pats padariau ypač dar su metodais kurių nesimokėm. :D Čia reikia nežinau kaip tik įmanoma paprasčiau nes čia tik galima sakyt supažindina mus su programa, bet biški persistengė dėstytojas. :)

 

Tavo duotame pavyzdyje dar sunkesnis variantas. Isskirstyti sakinio zodzius i arrayList ir td tikrinti - turbut vienas paprasciausiu imanomu budu. O jei klaus del nenaudotu funkciju (nors cia galbut tik viena, kurios gal dar neturetum moket), sakyk google radau pavyzdi ir viskas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Hm o per netbeans atidaro tau? nes man tai neina paleist programos.

Naudoju Eclipse ne NetBeans. O siaip tai jeigu neatidaro, tai .java failus gali, kad ir per notepad atsidaryti ir tiesiog perkopijuoti teksta

 

p.s. nekeliau as projekto, tik siaip failus nukopijavau is workspace

Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...