|
|
- 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.
-
- 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ä.
-
- Jos tehtävän ratkaiseminen osoittautuu kohtuuttoman hankalaksi, voit tutustua tehtävän ratkaisuun videotallenteena.
-
- ```
- Example output:
- Kirjoita lause:
- Parempi pyy pivossa kuin kymmenen oksalla
-
- Mitkä sanat vaihdetaan keskenään?
- 2 5
-
- Parempi pyy oksalla kuin kymmenen pivossa
- ```
-
- --------------------
-
- **SanojenVaihtaminen.java**
-
- ```
- import java.util.Scanner;
-
- public class SanojenVaihtaminen {
- public static void main(String[] args) {
-
- Scanner syote = new Scanner(System.in);
- int i = 0;
-
- System.out.println("Kirjoita lause: ");
- String lause = syote.nextLine();
- String[] lauseTaulukko = lause.split(" ");
-
- System.out.println("Mitkä sanat vaihdetaan keskenään?");
- String vaihtoSanat = syote.nextLine();
-
- String[] vaihtoTaulukko = vaihtoSanat.split(" ");
-
- // Length must be 2
- if (vaihtoTaulukko.length != 2) {
- System.err.println("Käytä kahta indeksiä. Olet määrittänyt väärän määrän indeksiarvoja");
- System.exit(1);
- }
-
- // Switch two strings in table lauseTaulukko
- try {
- String temp = lauseTaulukko[Integer.parseInt(vaihtoTaulukko[0])];
- lauseTaulukko[Integer.parseInt(vaihtoTaulukko[0])] = lauseTaulukko[Integer.parseInt(vaihtoTaulukko[1])];
- lauseTaulukko[Integer.parseInt(vaihtoTaulukko[1])] = temp;
- } catch (ArrayIndexOutOfBoundsException e) {
- System.err.printf(
- "Syöttämäsi indeksiarvo ylittää antamasi lauseen viimeisen indeksiarvon\n" +
- "Lauseen viimeinen sallittu indeksiarvo on %s",
- lauseTaulukko.length - 1
- );
- System.exit(1);
- } catch (NumberFormatException e) {
- System.err.printf(
- "Syöttämäsi indeksiarvo ei ole kelvollinen kokonaisluku\n"
- );
- System.exit(1);
- }
-
- // Will be deleted by Java garbage collector
- vaihtoTaulukko = null;
-
- String output = String.join(" ", lauseTaulukko);
- System.out.println(output);
-
- }
- }
- ```
|