Cześć,
Mam problem z Spoj-em.Zadanko brzmi tak:
W celu zaoszczędzenia ilości znaków w krótkich wiadomościach tekstowych (SMS) nie pisze się spacji, a każdy wyraz rozpoczyna się wielką literą. Twoim zadaniem jest otrzymany tekst przerobić zgodnie z powyższym trendem.
Input
Na wejściu znajduje się dowolny tekst bez polskich znaków.
Output
Tekst wprowadzony z wejścia, ale bez spacji. Ponadto każdy wyraz poprzedzony na wejściu spacją zaczyna się wielką literą.
Example
Input:
Dzisiaj jest czwartek,
A jutro bedzie piatek.
Output:
DzisiajJestCzwartek,
AJutroBedziePiatek
Wg tego co testuje ,to to działa. Liter na początku linijki według tego co rozumiem ,ma nie powiększać ,gdy są małe.Drugą wersję tez testowałem i również spoj nie przepuścił. Podejrzewam ,że chodzi o to ,iż tekst może być dowolny i nie zawsze warunkiem jego zakończenia musi być kropka. Ale jak wtedy to rozwiązać ? Z metody "hasNextLine()" korzystanie skończyło się brakiem stopu przy wczytywaniu. Ma ktoś jakiś pomysł jak to można rozwiązać ,nakieruje ?
edit: podwójne,potrójne spacje są uwzględnione w rozwiązaniu.
import java.lang.*;
import java.util.Scanner;
public class Main {
public String method(String[] txt) {
StringBuilder str = new StringBuilder();
boolean beforeCharSpace = false;
for (int i = 0; i < txt.length; i++) {
if (txt[i] == null) {
break;
}
for (int j = 0; j < txt[i].length(); j++) {
char character = txt[i].charAt(j);
if (character == '.') {
str.append(character);
break;
}
if (character == ' ') {
beforeCharSpace = true;
} else if (beforeCharSpace) {
int buf = character;
if (character >= 97 && character <= 122) {
buf -= 32;
}
str.append((char) buf);
beforeCharSpace = false;
} else {
str.append(character);
}
}
if ((i + 1) < txt.length && txt[i + 1] != null) {
str.append(System.lineSeparator());
}
}
return str.toString();
}
public static void main(String[] args) throws java.lang.Exception {
boolean endOfMessage = true;
Main main = new Main();
String[] txt = new String[10];
Scanner scanner = new Scanner(System.in);
int i = 0;
while (endOfMessage) {
txt[i] = scanner.nextLine();
for (int j = 0; j < txt[i].length(); j++) {
if (txt[i].charAt(j) == '.') {
endOfMessage = false;
break;
}
}
i++;
}
System.out.print(main.method(txt));
}
}