Java fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.7 KiB

4 years ago
  1. Kirjoita luokka SanojenVaihtaminen ja lisää siihen main-metodi. Ohjelman tulee kysyä käyttäjältä lause ja sen jälkeen vaihtaa siitä kahden sanan paikkaa keskenään. Vaihdettavien sanojen indeksit kysytään käyttäjältä esimerkkisuorituksen mukaisesti ja indeksit alkavat totutusti nollasta.
  2. Ohjelma kannattaa toteuttaa siten, että pilkot lauseen String-taulukoksi välilyöntien kohdalta. Sanoja vaihtaessasi tarvitset todennäköisesti tilapäisen muuttujan, johon laitat toisen alkuperäisistä sanoista talteen. Lopuksi voit yhdistää String-taulukon takaisin yhdeksi merkkijonoksi String-luokan join-metodilla siten, että erottimena käytetään jälleen välilyöntiä.
  3. Jos tehtävän ratkaiseminen osoittautuu kohtuuttoman hankalaksi, voit tutustua tehtävän ratkaisuun videotallenteena.
  4. ```
  5. Example output:
  6. Kirjoita lause:
  7. Parempi pyy pivossa kuin kymmenen oksalla
  8. Mitkä sanat vaihdetaan keskenään?
  9. 2 5
  10. Parempi pyy oksalla kuin kymmenen pivossa
  11. ```
  12. --------------------
  13. **SanojenVaihtaminen.java**
  14. ```
  15. import java.util.Scanner;
  16. public class SanojenVaihtaminen {
  17. public static void main(String[] args) {
  18. Scanner syote = new Scanner(System.in);
  19. int i = 0;
  20. System.out.println("Kirjoita lause: ");
  21. String lause = syote.nextLine();
  22. String[] lauseTaulukko = lause.split(" ");
  23. System.out.println("Mitkä sanat vaihdetaan keskenään?");
  24. String vaihtoSanat = syote.nextLine();
  25. String[] vaihtoTaulukko = vaihtoSanat.split(" ");
  26. // Length must be 2
  27. if (vaihtoTaulukko.length != 2) {
  28. System.err.println("Käytä kahta indeksiä. Olet määrittänyt väärän määrän indeksiarvoja");
  29. System.exit(1);
  30. }
  31. // Switch two strings in table lauseTaulukko
  32. try {
  33. String temp = lauseTaulukko[Integer.parseInt(vaihtoTaulukko[0])];
  34. lauseTaulukko[Integer.parseInt(vaihtoTaulukko[0])] = lauseTaulukko[Integer.parseInt(vaihtoTaulukko[1])];
  35. lauseTaulukko[Integer.parseInt(vaihtoTaulukko[1])] = temp;
  36. } catch (ArrayIndexOutOfBoundsException e) {
  37. System.err.printf(
  38. "Syöttämäsi indeksiarvo ylittää antamasi lauseen viimeisen indeksiarvon\n" +
  39. "Lauseen viimeinen sallittu indeksiarvo on %s",
  40. lauseTaulukko.length - 1
  41. );
  42. System.exit(1);
  43. } catch (NumberFormatException e) {
  44. System.err.printf(
  45. "Syöttämäsi indeksiarvo ei ole kelvollinen kokonaisluku\n"
  46. );
  47. System.exit(1);
  48. }
  49. // Will be deleted by Java garbage collector
  50. vaihtoTaulukko = null;
  51. String output = String.join(" ", lauseTaulukko);
  52. System.out.println(output);
  53. }
  54. }
  55. ```