Is this a correct way to utilize classes and methods in JAVA?
You seem to be under the impression that efficient code and good design are two separate things.  A good design will help you write efficient code.  

In this particular case, you need to learn about separation of concern.  Specifically what is the user concerned about and what should be handled by the class?

The user basically just wants the words in the supplied string swapped.  Everything else should be handled inside the class.

In the class itself, you don't really need all those properties and helper methods.  The main purpose of the code can easily be summed in one function.  I would suggest a utility class(StringUtils?) with a public static function to swap the words and return a string.

The solution could look like this:

Main.java

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    String sentence;
    System.out.println(
        "Please enter a sentence.\nFirst word will be swapped with the last one.\nSecond word will be swapped with second to last\netc.");
    try (Scanner sc = new Scanner(System.in)) {
      sentence = sc.nextLine(); 
    }   
    String swapped = StringUtils.swapWords(sentence);
    System.out.println(swapped);
  }
}


StringUtils.java

public class StringUtils {

  public static String swapWords(String input) {
    String[] usersWords = input.split(" ");
    if(usersWords.length &lt; 2){
      inputError();
    }
    String[] words = new String[usersWords.length];
    int mid = (words.length / 2) + 1;
    for (int front = 0, back = words.length - 1; front &lt; mid; ++front, --back) {
      words[front] = usersWords[back];
      words[back] = usersWords[front];
    }
    return String.join(" ", words);
  }

  private static void inputError(){
            System.out.println(
                    "You have entered an insufficient number of words. Enter at least 2 words for program to swap them");
            System.out.println("Exiting now");
            System.exit(0);   
  }
}