Sizlerle beraber java ' da epey yol katettik ve istedim ki sizlere
gerçek bir java kodu yazayım ve ilk aklıma gelen girilen kelimeyi
tersten yazdıran yani 'Reverser' kodunu yazdım . Umarım ödev arayan ve
java ' gönül veren arkadaşlar için güzel bir çalışma olur.
Saygılarımla.
Seyhan Uçar
CODE:
/* Encoded by :Seyhan Uçar
* www.thecoders.net
* seyhan@thecoders.net
*/
import java.io.*;
//=======================================================
class StackX
{
private int maxsize;
private char[] stackarray;
private int top;
//===================================================
public StackX(int max)
{
maxsize = max;
stackarray = new char[maxsize];
top = -1;
}
//===================================================
public void push(char j)
{
stackarray[++top] = j;
}
//===================================================
public char pop()
{
return stackarray[top--];
}
//===================================================
public char peek()
{
return stackarray[top];
}
//===================================================
public boolean isEmpty()
{
return (top == -1);
}
//===================================================
}
//=======================================================
class Reverser
{
private String input;
private String output;
//====================================================
public Reverser(String in)
{
input = in;
}
//===================================================
public String doRev()
{
int stacksize = input.length();
StackX stackx = new StackX(stacksize);
for(int j = 0;j < input.length();j++)
{
char ch = input.charAt(j);
stackx.push(ch);
}
output = "";
while(!stackx.isEmpty())
{
char ch = stackx.pop();
output = output + ch;
}
return output;
}
}
class ReverseApp
{
public static void main(String[] args) throws IOException
{
String input,output;
while(true)
{
System.out.print("Enter the string:");
System.out.flush();
input = getString();
if(input.equals(""))
break;
Reverser theReverser = new Reverser(input);
output = theReverser.doRev();
System.out.println("Reversed:-->>" +output);
}
}
//===================================================
public static String getString() throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(isr);
String s = stdin.readLine();
return s;
}
}
[IMG SRC="http://img225.imageshack.us/img225/2408/seyhanzt2.jpg" ALIGN="oğuz"]seyhan[/IMG]
Simülasyon projende başarılar kardeşim.Bir başlamadığım java kaldı sayende ona başlıcam gibi yakında:)
Recursive (özyineleme) yöntemiyle aşağıdaki şekilde çok daha hızlı çalışan ve kısa bir kod yazılabilir.
CODE:
public static String terstenYaz(String i) {
if (i.length()==0)
return "";
return i.substring(i.length()-1)+terstenYaz(i.substring(0,i.length()-1));
}
Katkın için teşekkürler recursive algoritmalara geçmeden önce benim
tavsiyem iteratif algoritmalar olur.ANcak bu şekilde recursive algoritmaların altında yatan mantığı anlamış oluruz.Bu kodu stack kullanarak yazmamdaki amaç ise Java cı arkadaşların Object ve Classes(nesne ve sınıf) kavramlarına daha aşikar olmalarını sağlamaktır.Senin de bildiğin üzere recursive algoritmalar veri yapısı olarak stack kullanırlar.Çok hızlı çalışırlar ama bellek alanınından çok yer işgal ederler.
Stack konusu iyice anlaşılırsa ben eminim ki java ile uğraşan arkadaşlar bu kodu kolaylıkla yazabilirler.Katkın için sana yeniden teşekkür ederim.
Saygılarımla.
Seyhan Uçar
[IMG SRC="http://img225.imageshack.us/img225/2408/seyhanzt2.jpg" ALIGN="oğuz"]seyhan[/IMG]
Tabi... Java ya yeni başlayan arkadaşların daha kolay anlamaları nesne-sınıf yapısına hakim olabilmeleri için bu şekilde kod yazmanız gayet güzel olmuş.
Ben amacın "tersten yazdırmak" olduğunu düşünerek bu kodu yazmıştım, tabi yeni başlayanlar için bu konular biraz ileri seviye.
[IMG SRC="http://img225.imageshack.us/img225/2408/seyhanzt2.jpg" ALIGN="oğuz"]seyhan[/IMG]
