I've used arrays before; I actually changed Item to be an array while I was trying to figure out why it wasn't working here. That said, it honestly didn't seem to change anything - I literally just did a "find-replace" for "Item#" with "Item[#]" (making sure to add in a Item[0], of course). Is there any real benefit for having it in an array?
Mostly the reason is that it's easier to change later and generally
neater, but there are some functional differences. For instance, if you ever need to do something to all the items in your item stack, (like unequip everything or something) you can just iterate through them all with a for loop. Or a foreach loop, if you're feeling especially hard boiled at the time. Also, you can pass the whole item pile as a function parameter.
As for comparing strings with "==", it's still a bad idea even if it sometimes works. Eventually you're going to use it on a string that is not constant, and then your program will bug out and you'll spend like half an hour trying to figure out why. And while I'm criticizing your string comparisons, you seem to have made a habit of passing strings as function parameters and then checking whether that string is the same as some other string. This is more a job for a boolean, and anyway, once the number of possible critters gets higher, you are going to have this huge, inefficient switch-case ladder and other programmers will point at you and call you names.
Using descriptive variable names often makes it harder to make stupid mistakes, and the guy who taught
my sole college-level programming course drilled us into always writing Javadoc comments every time even when the code is really obvious, and I heartily recommend both. Don't listen to the "you need to study more before you can start coding" arguments, though. An overambitious project is the best way to learn
anything. Worst-case scenario, you need to redo your code later, and that usually happens anyway, no matter how much one plans for the future.