Как реализовать алгоритм BFS?Кроме того, как вызвать метод другого класса с помощью onClickListener ()? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу реализовать алгоритм BFS в андроид студии.В моем коде кнопка «ввод» принимает ввод графика и при нажатии кнопки «готово» должен запускаться алгоритм BFS и показывать уровень [] каждого узла в textView или в любом случае.Как новичок, я не могу вызвать метод другого класса с помощью onClickListener.Я использую эмулятор.В этом коде при нажатии кнопки «Готово» приложение перестало работать.

package com.example.sample;

import android.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.Console;
import java.util.Iterator;
import java.util.LinkedList;

public class MainActivity<editText> extends AppCompatActivity{

    private EditText X , Y;
    private Button enter , done;
    private TextView textView;
    public static int level[];
    Graph G = new Graph();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        X = (EditText) findViewById(R.id.uId);
        Y = (EditText) findViewById(R.id.vId);

        enter = (Button) findViewById(R.id.enterId);
        done = (Button) findViewById(R.id.doneId);
        textView = (TextView) findViewById(R.id.textViewId);


        enter.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                    String A = X.getText().toString();
                    String B = Y.getText().toString();

                    Integer x = Integer.parseInt(A);
                    Integer y = Integer.parseInt(B);

                    if (v.getId() == R.id.enterId) {
                        G.addEdge(x, y);
                        G.addEdge(y, x);
                        textView.setText(x+" "+y);
                        //X.setText("");
                        //Y.setText("");
                    }
                }
        });
        done.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (v.getId() == R.id.doneId) {
                   G.BFS(0);
                   //Show level[] array;
                }
            }
        });
    }

    public static class Graph{
        public static int V=10;
        private LinkedList<Integer> adj[];

        // Constructor
        Graph() {
            int v = V;
            adj = new LinkedList[v];
            for (int i = 0; i < v; ++i) {
                adj[i] = new LinkedList();
            }
        }

        void addEdge(int v, int w) {
            adj[v].add(w);
        }

        void BFS(int s) {
            boolean visited[] = new boolean[V];
            LinkedList<Integer> queue = new LinkedList<Integer>();
            visited[s] = true;
            queue.add(s);

            while (queue.size() != 0) {
                s = queue.poll();
                System.out.print(s + " ");
                Iterator<Integer> i = adj[s].listIterator();
                while (i.hasNext()) {
                    int n = i.next();
                    if (!visited[n]) {
                        visited[n] = true;
                        level[n] = level[s]+1;
                        queue.add(n);
                    }
                }
            }
        }
    }
}
...