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.
 

2.7 KiB

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