Study kasus kali ini adalah bagaimana cara melakukan sorting/ pengurutan kata yang telah diinput, kondisinya adalah inputan tidak boleh berisi angka maupun simbol.
Hasil yang diharapkan sebagai berikut,
Input: dede
Hasil : ddee
Solusi :
Struktur project

AlphabetSoup.java
import java.util.ArrayList;
import java.util.Scanner;
public class AlphabetSoup {
public static void main(String[] args){
//input console
Scanner input;
InputStringImpl inputClass = new InputStringImpl();
String inputtedStr = null;
int no = 1;
ArrayList<DataHold> reportData = new ArrayList<>();
do{
input = new Scanner(System.in);
System.out.println("Type exit to finish your input ");
System.out.println("[" +no +"]" +" Please input your string ");
inputtedStr = input.nextLine();
if(inputtedStr.toString().trim().length() > 0 && !inputtedStr.toString().trim().toLowerCase().equals("exit")){
if(inputtedStr.matches("^[a-zA-Z]*$")){
DataHold dataHold = new DataHold();
dataHold.setNumber(no);
dataHold.setStrOld(inputtedStr.toString());
dataHold.setStrNew(inputClass.inputReverse(inputtedStr));
reportData.add(dataHold);
no++;
}else{
System.out.println("Please try again, only legal alphabet is allowed ");
}
}
}while(!inputtedStr.toLowerCase().trim().equals("exit"));
//display result
System.out.println("***************Report input reverse string*****************");
for (int x=0;x<reportData.size();x++){
System.out.format("[ %2d ] the old string before converted: %s ===> after: %s", reportData.get(x).getNumber(), reportData.get(x).getStrOld(), reportData.get(x).getStrNew());
System.out.println("");
}
System.out.println("***************End input reverse string*****************");
}
}
DataHold.java
import java.util.Objects;
public class DataHold {
int number;
String strOld;
String strNew;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getStrOld() {
return strOld;
}
public void setStrOld(String strOld) {
this.strOld = strOld;
}
public String getStrNew() {
return strNew;
}
public void setStrNew(String strNew) {
this.strNew = strNew;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DataHold dataHold = (DataHold) o;
return number == dataHold.number && strOld.equals(dataHold.strOld) && strNew.equals(dataHold.strNew);
}
@Override
public int hashCode() {
return Objects.hash(number, strOld, strNew);
}
@Override
public String toString() {
return "DataHold{" +
"number=" + number +
", strOld='" + strOld + '\'' +
", strNew='" + strNew + '\'' +
'}';
}
}
InputString.java
public interface InputString {
String inputReverse(String str);
}
InputStringImpl.java
import java.util.Arrays;
public class InputStringImpl implements InputString {
@Override
public String inputReverse(String str) {
String [] arrStr = str.split("");
//sorting
Arrays.sort(arrStr);
StringBuffer sb = new StringBuffer();
for (int i=0;i<arrStr.length;i++){
sb.append(arrStr[i]);
}
return sb.toString();
}
}
Result
Type exit to finish your input
[1] Please input your string
dede
Type exit to finish your input
[2] Please input your string
hello world
Please try again, only legal alphabet is allowed
Type exit to finish your input
[2] Please input your string
helloworld
Type exit to finish your input
[3] Please input your string
testing
Type exit to finish your input
[4] Please input your string
komputer
Type exit to finish your input
[5] Please input your string
exit
***************Report input reverse string*****************
[ 1 ] the old string before converted: dede ===> after: ddee
[ 2 ] the old string before converted: helloworld ===> after: dehllloorw
[ 3 ] the old string before converted: testing ===> after: eginstt
[ 4 ] the old string before converted: komputer ===> after: ekmoprtu
***************End input reverse string*****************
Process finished with exit code 0
Comments