Activitats

Comptar as

L’objectiu d’aquesta activitat és aprendre a recórrer un objecte string (una cadena de text) per tractar els valors que conté.

Genereu un programa en Java anomenat ComptaAsString que compti quantes lletres a conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.

  1. public class ComptaAsString {
  2.  
  3. //Hi ha 5 as.
  4. public static final String cadena = "Hi havia una vegada…";
  5.  
  6. public static void main(String[] args) {
  7. int comptador = 0;
  8. for (int i = 0; i < cadena.length(); i++) {
  9. if (cadena.charAt(i) == 'a') {
  10. comptador++;
  11. }
  12. }
  13. System.out.println("Hi ha " + comptador + " as.");
  14. }
  15. }

Partir arguments

L’objectiu d’aquesta activitat és aprendre a tractar conjunts de cadenes de text passades com a arguments del mètode principal.

Genereu un programa en Java anomenat ParteixArguments que, per a cada argument passat al mètode principal, se’n mostri a la pantalla la primera meitat, arrodonint cap amunt.

Per exemple, si els arguments són “Hi havia una vegada una noia…” (recordeu que cada paraula és un argument individual, ja que se separen amb espais), la sortida serà:

H
hav
un
veg
un
noi

  1. public class ParteixArguments {
  2.  
  3. public static void main (String[] args) {
  4.  
  5. for(int i = 0; i < args.length; i++) {
  6. int meitat = args[i].length() / 2;
  7. //La llargària és senar?
  8. if (args[i].length() % 2 != 0) {
  9. meitat++;
  10. }
  11. String mitjaCadena = args[i].substring(0, meitat);
  12. System.out.println(mitjaCadena);
  13. }
  14.  
  15. }
  16.  
  17. }

Concatenar frases

L’objectiu d’aquesta activitat és aprendre a concatenar text introduït des del teclat.

Feu un programa en Java anomenat ConcatenaText que llegeixi dues frases des del teclat, les concateni i mostri el resultat per pantalla.

  1. import java.util.Scanner;
  2.  
  3. public class ConcatenaText {
  4.  
  5. public static final int NUM_FRASES = 2;
  6.  
  7. public static void main (String[] args) {
  8. Scanner lector = new Scanner(System.in);
  9.  
  10. String novaFrase = "";
  11. System.out.println("Escriu " + NUM_FRASES + " frases.");
  12. System.out.println("Per acabar una frase, pitja la tecla de retorn.");
  13. for (int i = 0; i < NUM_FRASES; i++) {
  14. novaFrase = novaFrase + lector.nextLine();
  15. }
  16. System.out.println(novaFrase);
  17.  
  18. }
  19. }

Paraules senars

L’objectiu d’aquesta activitat és aprendre a dividir frases en paraules individuals, que puguin ser fàcilment processades.

Feu un programa en Java anomenat ParaulesSenars que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s’escriu “Hi havia una vegada un lloc…”, es mostrarà “Hi una un”.

  1. import java.util.Scanner;
  2.  
  3. public class ParaulesSenars {
  4.  
  5. public static void main (String[] args) {
  6. Scanner lector = new Scanner(System.in);
  7.  
  8. System.out.println("Escriu una frase de diverses paraules:");
  9. String frase = lector.nextLine();
  10.  
  11. String[] arrayParaules = frase.split(" ");
  12. for(int i = 0; i < arrayParaules.length; i = i + 2) {
  13. System.out.print (arrayParaules[i] + " ");
  14. }
  15. }
  16. }

Omplir un "array" de cadenes de text

L’objectiu d’aquesta activitat és aprendre a llegir paraules pel teclat i omplir arrays que contenen cadenes de text.

Feu un programa en Java anomenat InverteixArrayText que llegeixi 5 paraules (no frases) des del teclat. Cada paraula ha d’estar en una línia de text diferent. Si en una mateixa línia de text s’escriu més d’una paraula, només cal preveure la primera, i la resta s’ignoren.

Amb les 5 paraules llegides, cal omplir un array. En acabar, usant aquest array, cal mostrar les paraules en ordre invers respecte a com s’han entrat (primer la darrera, després la penúltima, etc.).

  1. import java.util.Scanner;
  2.  
  3. public class InverteixArrayText {
  4.  
  5. public static final int NUM_PARAULES = 5;
  6.  
  7. public static void main (String[] args) {
  8. Scanner lector = new Scanner(System.in);
  9.  
  10. String[] array = new String[5];
  11.  
  12. System.out.println("Escriu " + NUM_PARAULES + " paraules separades per espai.");
  13. System.out.println("N'hi ha d'haver una per línia.");
  14. for (int i = 0; i < NUM_PARAULES; i++) {
  15. array[i] = lector.next();
  16. lector.nextLine();
  17. }
  18.  
  19. for (int i = array.length - 1; i >= 0 ; i--) {
  20. System.out.print(array[i] + " ");
  21. }
  22. }
  23. }

Subcadena entre ves baixes

L’objectiu d’aquesta activitat és aprendre a generar subcadenes a partir d’un text original.

Feu un programa en Java anomenat SubcadenaV que llegeixi una frase des del teclat i que mostri segons el cas un missatge diferent per pantalla:

  • Si a la frase no hi ha cap lletra ve, cal mostrar el missatge: “No hi ha cap ve”.
  • Si a la frase només hi ha una lletra ve, cal mostrar el missatge: “Només hi ha una ve”.
  • Si a la frase hi ha més d’una lletra ve, cal mostrar tot el text comprès entre la primera i la darrera (incloses).

Per exemple, donada la frase “Hi havia una vegada un lloc on vivia…”, com a resultat es mostrarà “via una vegada un lloc on viv”.

  1. import java.util.Scanner;
  2.  
  3. public class SubcadenaV {
  4. public static void main (String[] args) {
  5. Scanner lector = new Scanner(System.in);
  6.  
  7. System.out.println("Escriu una frase:");
  8. String frase = lector.nextLine();
  9.  
  10. int primeraV = frase.indexOf("v");
  11. int darreraV = frase.lastIndexOf("v");
  12.  
  13. if (primeraV == -1) {
  14. System.out.println("No hi ha cap \"v\".");
  15. } else if (primeraV == darreraV) {
  16. System.out.println("Només hi ha una \"v\".");
  17. } else {
  18. System.out.println(frase.substring(primeraV, darreraV + 1));
  19. }
  20. }
  21. }

La darrera paraula

L’objectiu d’aquesta activitat és aprendre a comparar paraules lexicogràficament.

Feu un programa en Java anomenat DarreraParaula que vagi llegint paraules des del teclat fins trobar la paraula “fi”. Quan això succeeix, ha de mostrar per pantalla la paraula que tindria la darrera posició lexicogràfica (aniria més cap al final en un diccionari) entre totes les escrites. La paraula “fi” en queda exclosa.

  1. import java.util.Scanner;
  2.  
  3. public class DarreraParaula {
  4.  
  5. public static void main (String[] args) {
  6. Scanner lector = new Scanner(System.in);
  7.  
  8. System.out.println("Ves escrivint paraules.");
  9. System.out.println("Per acabar, usa la paraula \"fi\".");
  10. String darreraParaula = "";
  11. boolean fi = false;
  12. do {
  13. String paraula = lector.next();
  14. if (paraula.equals("fi")) {
  15. fi = true;
  16. } else {
  17. if (paraula.compareTo(darreraParaula) > 0) {
  18. darreraParaula = paraula;
  19. }
  20. }
  21. } while (!fi);
  22. System.out.println("La darrera parala és \"" + darreraParaula + "\".");
  23. }
  24. }

Suma entre comes

L’objectiu d’aquesta activitat és aprendre a extreure valors de tipus enter des d’una cadena de text de longitud arbitrària.

Feu un programa en Java anomenat SumarEntersComes que llegeixi des del teclat una única línia de text. Aquesta ha d’estar sempre composta de nombres enters separats entre si per comes. El programa ha de mostrar la suma de tots els valors individuals.

Per exemple, si s’escriu “3,8,5,4,11,5”, el resultat mostrat serà “36” (3 + 8 + 5 + 4 + 11 + 5).

Aquesta vegada, podeu considerar que la línia escrita sempre és correcta. No cal preveure errades a causa d’un format incorrecte del text.

  1. import java.util.Scanner;
  2.  
  3. public class SumaEntersComes {
  4. public static void main (String[] args) {
  5. Scanner lector = new Scanner(System.in);
  6.  
  7. System.out.println("Escriu un text compost per nombres separats per comes:");
  8. String text = lector.nextLine();
  9.  
  10. String[] arrayValors = text.split(",");
  11. int suma = 0;
  12. for(int i = 0; i < arrayValors.length; i++) {
  13. int valor = Integer.parseInt(arrayValors[i]);
  14. suma = suma + valor;
  15. }
  16. System.out.println("La suma és " + suma + ".");
  17. }
  18. }

Anar a la pàgina anterior:
Tractament de cadenes de text
Anar a la pàgina següent:
Exercicis d'autoavaluació