A simple Java game where the player guesses the word
Performance

You create a new Scanner for every guess. this is unnecessary. the same scanner can be used to read all user input. the scanner should be closed only at the end of the program. and if you adopt that, you can also use Java 7 try-with-resources feature. it is a safe(r) way to open and process external resources.

JDK library features


in order to fill an array with the same character, you can use Arrays.fill() method: Arrays.fill(censoredWordArray, '_'); and you do not need to keep the String representation of the array, just print the string value to the user. However, FYI, Java 11 gives us String::repeat to fill a String with one character: String censoredWord = "_".repeat(word.length());
I assume this is CS course homework, so I do not know if this comment is applicable. However, Java 8 (which has been around for over 5 years) gave us stream processing of collections, which, compared to for loops, is a more expressive (and sometimes performant) way to iterate over collections and arrays. for example, the loop in showProgress can be re-written like this   

IntStream.range(0, wordArray.length)
    .filter(i -&gt; wordArray[i] == letter)
    .findFirst()
    .ifPresent(i -&gt; censoredWordArray[i] = letter);



Best practices

Avoid magic numbers and literals: 
private static final String EMPTY_LETTER = "_";
not only it makes the code more readable, it will eliminate typo bugs in case you need to specify the literal in multiple places in the code.