Positional change program in Java
The move variable seems unnecessary - you pass it to getValidMove() but never use it inside the function.
The language has loops for repetitive tasks. In the drawPlayfield() you may do

for(int i=0; i&lt;9; i++)
    System.out.println("|"+table[i]);
System.out.println("|");


instead of

System.out.println("|"+table[0]+"|"+table[1]+"|"+table[2]+
        "|"+table[3]+"|"+table[4]+"|"+table[5]+"|"+table[6]+"|"+table[7]
+"|"+table[8]+"|");


This costs 10 calls instead of two, but 1) saves strings addition, 2) makes the code easy expandable (you just need to replace the 9 with another expression).
The getValidMove() function returns just one int value. Why do you allocate a table for it? declare the return type as int instead of int [] and save unnecessary work.
There is some problem with reponsibilities of functions. Function getValidMove() not only gets a valid move, as its name says, but it also removes the chosen piece from the table with assignment table[start] = " "; That is a part of performing the actual move. However I can't see where the move is completed. Where do you do table[destination] = "x"; or table[destination] = "o";? And where do you store the shape of the piece removed by table[start] = " "; to be reinserted at destination?


Critical problems are fixed now - but one important remains:


The part to input user's move is unsafe. The first loop tests for both numbers being in the required range and repeats asking for input until data are correct – or until -1 appears, which terminates the program. 

Then, however, another loop starts, which tests if the chosen destination position is free – and this loop does no longer validate values for being between 1 and 8. It also does not validate data for conforming the game rules (i.e. whether the jump is no more than 2 positions long).

IMHO there should be one loop, looking more or less like this:

do
{
    do
    {
        System.out.println("Input start position (0-8)");
        start = sc.nextInt();
        if (start == -1)
        {
            System.exit(0);
        }
    } while (start &lt; 0 || start &gt; 8);

    do
    {
        System.out.println("Input destination position (0-8)");
        destination = sc.nextInt();
        if (destination == -1)
        {
            System.exit(0);
        }
    } while (destination &lt; 0 || destination &gt; 8);

    if (destination == start)
    {
        System.out.println("Destination must differ from start!");
        continue;
    }
    if (destination &lt; start - 2 || destination &gt; start + 2)
    {
        System.out.println("Destination must not differ from start more than by 2!");
        continue;
    }

    if (table[destination] != ' ')
    {
        System.out.println("The destination position is not empty!");
        continue;
    }
} while (false);   // the input is OK now


Of course the two inner loops are asking for replacing them with a call to some helper function...