This is the design of the language.
In many cases, methods returns a value you don't care about. For example StringBuilder.append()
returns the object itself.
It is true that in some cases an important return value might be lost. For example, InputStream.skip(long n)
returns the number of bytes skipped. And read
returns the number of bytes read. There are some tools (Checkstyle, FindBugs) that detect such bugs. But the language itself doesn't request checking the return value. And even if it did, the program could choose to ignore the value.