Playing "craps" for the win
A code currently in main should be wrapped in its own method (game perhaps).
Business logic shall be performed as high in the call tree as possible. Regarding your code this principle means that neither firstRoll nor moreRolls should call declareResults. The same (questionably) applies to the while loop in moreRolls.

Consider a game skeleton along the lines of

result = firstRoll();
while (result == UNDEFINED)
    result = moreRoll();
declareResults();

moreRolls creates a Scanner and never uses it.
causeOfWin and causeOfLose are mutually dependent. You don't need two distinct variables: cause would be enough.