0

私は3つのJavaクラスを持っています。スタック - スタックを実装します。Stackserver - Stack オブジェクトを作成し、ユーザー アクションに基づいて結果を返すサーバーを実装します。 StackClient - アクションの要求を送信し、サーバーから結果を受信するクライアントを実装します。

アクションは、プッシュ、ポップ、表示、および終了です。

アクションを入力すると、常に無効な操作と表示されます。誰かがプログラムの欠陥を見つけることができますか?

スタック クラス

public class Stack
{
    private int maxSize;
    private int[] stackArray;
private int top,i;

public Stack(int s)
{
        maxSize = s;
        stackArray = new int[maxSize];
        top = -1;
}

public void push(int j) 
{
        stackArray[++top] = j;
}

    public String display()
    {
        i=top;
        String s="";
        while(i>=0)
        {
            s=s+" "+stackArray[i--];
        }
        return s;
    }    

public int pop()
{
        return stackArray[top--];
}

public int peek()
{
        return stackArray[top];
}

public boolean isEmpty()
{
        return (top == -1);
}

public boolean isFull()
{
        return (top == maxSize - 1);
}   
}

StackServer クラス

import java.net.*;
import java.io.*;

public class StackServer
{

ServerSocket server;
Socket link;
PrintWriter out;
BufferedReader in;

public void run()
{
    try     
    {

    System.out.println("Creating Server Socket.");
        server = new ServerSocket(4000);
    System.out.println("Successfully created Server Socket.");

    Socket link;
    System.out.println("Waiting For Connection.");
    link = server.accept();
    System.out.println("Connection received from " + link.getInetAddress().getHostName());

    out = new PrintWriter(link.getOutputStream(),true);
    in = new BufferedReader(new InputStreamReader(link.getInputStream()));          

    out.println("Eneter Stack Size.");
    int size = Integer.parseInt((in.readLine()).trim());
    Stack stack = new Stack(size);

    while(true)
    {   
        String action="";
        int n;

        out.println("Eneter Stack Operation.");
        action = in.readLine();

        if(action == "push")
        {
            if(stack.isFull())
            {
            out.println("Stack Full. What next?");
            }
            else
            {
            out.println("Enter element: ");
            n = Integer.parseInt((in.readLine()).trim());
            stack.push(n);
            out.println("Pushed item. What next?");
            }

        }
        else if(action == "pop")
        {
            if(stack.isFull())
            {
            out.println("Stack Full. What next?");
            }
            else
            {
                n = stack.pop();
            out.println(n);
            out.println("Pushed item. What next?");
            }
        }
        else if(action == "display")
        {
            out.println(stack.display());
        }
        else if(action == "exit")
        {
            link.close();
            break;
        }
        else
        {
            out.println("Invalid Operation");
        }
        }
            }
        catch(Exception ex)
        {
        System.out.println(ex);
        }
        }

    public static void main(String [] args)
    {
    StackServer s = new StackServer();
    s.run();}
    }

StackClient クラス

import java.net.*;
import java.io.*;

public class StackClient
{
public static void main(String [] args)
{
    try     
    {
            Socket client;
        System.out.println("Creating Client Socket.");
        client = new Socket("localhost",4000);
    System.out.println("Successfully created Client Socket.");

    BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintWriter out = new PrintWriter(client.getOutputStream(),true);
        String action ="";
        String size,s;

    System.out.println(in.readLine());
    size = read.readLine();
        out.println(size);

    while(true)
    {

        System.out.println(in.readLine());
        action = read.readLine();
        out.println(action);

        if(action.equals("push"))
        {
                System.out.println(in.readLine());
        s=read.readLine();
        System.out.println(in.readLine());  
        }
        else if(action == "pop")
        {
        System.out.println(in.readLine());
        }
        else if(action == "display")
        {
        System.out.println(in.readLine());  
            }
            else if(action == "exit")
        {
                client.close();
        break;
        }
        else
        {
        out.println("Invalid Operation from Client");
        }
    }
    }
    catch(Exception ex)
    {
    System.out.println(ex);
    }
    }
    }   
}
4

1 に答える 1