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);
}
}