daily pastebin goal
13%
SHARE
TWEET

Untitled

a guest Nov 15th, 2018 81 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. //luodaan ohjelma, joka kysyy käyttäjältä merkkijonoa ja etsii siitä käyttäjän antaman toisen merkkijonon esiintymiä
  2. import java.util.*;
  3. public class SubstringFinderZ {
  4.     public static void main(String[] args) {
  5.         String VIRHE = "Error!";
  6.         char JATKETAAN = 'y';
  7.         char LOPETETAAN = 'n';
  8.         char JOKERI = '*';
  9.         boolean lopetus = false;
  10.         boolean alkupaasta = false;
  11.         boolean lopusta = false;
  12.         boolean eiTahtea = true;
  13.         String siistiOsamjono = "";
  14.         String osamerkkijono = "";
  15.         //alustetaan muuttujat, jotka näkyvät koko main-operaatioon
  16.         System.out.println("Hello! I find substrings.");
  17.         //tervehditään käyttäjää
  18.         while(!lopetus) {
  19.             boolean tulikoVirhe = true;
  20.             boolean osaMjonoOK = false;
  21.             System.out.println("Please, enter a string:");
  22.             String merkkijono = In.readString();
  23.             //luetaan käyttäjältä merkkijono, jota tarkastellaan
  24.             while(!osaMjonoOK) {
  25.                 siistiOsamjono = ""; //tyhjennetään siistiOsamjono, jos se ei ole jo tyhjä.
  26.                 System.out.println("Please, enter a substring:");
  27.                 osamerkkijono = In.readString();
  28.                 //luetaan käyttäjältä osamerkkijono, jonka esiintymiä pidemmässä mjonossa tarkastellaan
  29.                 char ekaMerkki = osamerkkijono.charAt(0);
  30.                 char vikaMerkki = osamerkkijono.charAt(osamerkkijono.length() - 1);
  31.  
  32.                 //tarkastetaan, onko keskellä osamerkkijonoa eksynyt tähti
  33.                 boolean eksynytTahti = false;
  34.                 for (int i = 1; i < osamerkkijono.length() - 1; i ++) {
  35.                     if (osamerkkijono.charAt(i) == JOKERI) {
  36.                         eksynytTahti = true;
  37.                     }
  38.                 }
  39.  
  40.                 //tarkastetaan, onko keskellä merkkijonoa eksynyt tähti
  41.                 for (int i = 1; i < merkkijono.length() - 1; i ++) {
  42.                     if (merkkijono.charAt(i) == JOKERI) {
  43.                         eksynytTahti = true;
  44.                     }
  45.                 }
  46.  
  47.                 if (osamerkkijono.length() > merkkijono.length() || osamerkkijono.equals("*")
  48.                 || (ekaMerkki == (JOKERI) && vikaMerkki == (JOKERI))
  49.                 || eksynytTahti) {
  50.                     System.out.println(VIRHE);
  51.                     //tarkastetaan, onko syöte oikeanlainen
  52.                 }
  53.                
  54.                 if (ekaMerkki == (JOKERI)) {
  55.                     lopusta = true;
  56.                     eiTahtea = false;
  57.                     alkupaasta = false;
  58.                     for (int i = 1; i < osamerkkijono.length(); i++) {
  59.                         siistiOsamjono += osamerkkijono.charAt(i);
  60.                     }
  61.                     osaMjonoOK = true;
  62.                 } else if (vikaMerkki == (JOKERI)) {
  63.                     alkupaasta = true;
  64.                     eiTahtea = false;
  65.                     lopusta = false;
  66.                     for (int i = 0; i < osamerkkijono.length() - 1; i++) {
  67.                         siistiOsamjono += osamerkkijono.charAt(i);
  68.                     }
  69.                     osaMjonoOK = true;
  70.                     //tarkastellaan, esiintyykö tähteä, ja jos esiintyy, siistitään se pois osamjonosta
  71.                 } else {
  72.                     osaMjonoOK = true;
  73.                     eiTahtea = true;
  74.                     alkupaasta = false;
  75.                     lopusta = false;
  76.                     siistiOsamjono = osamerkkijono;
  77.                 }
  78.                 //tarkastetaan onko osamerkkijono OK, jos ei, kysytään uutta ja jos on, jatketaan
  79.             }
  80.  
  81.         int kierroslaskuri = 0;
  82.         int alkuindeksi = 0;
  83.         int loppuindeksi = 0;
  84.         String tempMerkkijono = "";
  85.         String tulostettava = "";
  86.         //alustetaan muuttujia
  87.         if (eiTahtea) { //jos osamerkkijonossa ei ole tähteä
  88.             loppuindeksi = merkkijono.length() - siistiOsamjono.length();
  89.         } else if (alkupaasta) { //jos etsitään merkkijonon alkupäästä
  90.             loppuindeksi = merkkijono.length() / 2 - 1;                
  91.         } else if (lopusta) { //jos etsitään merkkijonon lopusta
  92.             kierroslaskuri = merkkijono.length() / 2;
  93.             loppuindeksi = merkkijono.length() - 1;
  94.         }
  95.        
  96.         //alla etsitään osamjonon esiintymiä mjonosta, ja tulostetaan ne
  97.         while((alkuindeksi + kierroslaskuri) < loppuindeksi + 1) {
  98.             tempMerkkijono = "";
  99.             for(int i = alkuindeksi + kierroslaskuri; i < siistiOsamjono.length() + kierroslaskuri; i++) {
  100.                 tempMerkkijono += merkkijono.charAt(i);
  101.             }
  102.             if (siistiOsamjono.equals(tempMerkkijono)) {
  103.                 for (int x = 0; x < kierroslaskuri; x++) {//lisätään viivat ennen esiintymää
  104.                     tulostettava += "-";
  105.                 }
  106.                 tulostettava += tempMerkkijono; //lisätään tulosteeseen esiintymä
  107.                 for (int i = tulostettava.length(); i < merkkijono.length(); i++) {
  108.                     //lisätään viivat esiintymän jälkeen
  109.                     tulostettava += "-";
  110.                 }
  111.                 System.out.println(tulostettava); //tulostetaan esiintymä viivoineen
  112.                 tulostettava = "";
  113.             }
  114.  
  115.             kierroslaskuri++;
  116.         }
  117.  
  118.         //luuppi, jossa kysytään haluaako käyttäjä jatkaa, ja katsotaan, kertooko hän sen oikein
  119.         while (tulikoVirhe) {
  120.             System.out.println("Continue (y/n)?");
  121.             char jatketaanko = In.readChar();
  122.             //kysytään käyttäjältä, haluaako hän jatkaa
  123.             if (jatketaanko == (JATKETAAN)) {
  124.                 lopetus = false;
  125.                 tulikoVirhe = false;
  126.             } else if (jatketaanko == (LOPETETAAN)) {
  127.                 System.out.println("See you soon.");
  128.                 lopetus = true;
  129.                 tulikoVirhe = false;
  130.             } else {
  131.                 System.out.println(VIRHE);
  132.             }
  133.         }
  134.         }
  135.     }
  136. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top