You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用String类型实现if/else判断,替换整数输入调用指定方法?

问题分析与解决方案

嘿,这问题我熟!你踩了Java字符串操作里两个常见的小坑,我给你一步步捋清楚:

问题1:Scanner没有nextString()方法

你写的navigate.nextString()是不存在的API哦!要获取用户输入的字符串,应该用navigate.next()(适合获取单个单词,比如"shop""inn"这类)或者navigate.nextLine()(获取整行输入),这里用next()就足够了。

问题2:字符串内容比较不能用==

在Java里,==比较的是两个字符串对象的内存地址,而不是实际内容。哪怕两个字符串文字一模一样,只要是不同的对象,==就会返回false。要比较字符串的内容,必须用equals()方法;如果想让程序更友好(比如用户输入"Shop""INN"也能识别),可以用equalsIgnoreCase()忽略大小写。

修正后的完整代码

import java.util.*;
public class ShopTest {
    public static Scanner navigate = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("Where to?\n Shop (type 'shop')\n Inn (type 'inn')");
        // 修正:用next()获取字符串输入
        String a = navigate.next();
        // 修正:用equalsIgnoreCase()比较内容,兼容大小写输入
        if (a.equalsIgnoreCase("shop")) Shop();
        else if (a.equalsIgnoreCase("inn")) Inn();
        else {
            // 新增非法输入提示,提升交互体验
            System.out.println("Sorry, I don't recognize that place!");
        }
    }
    public static void Shop() {
        System.out.println("Welcome to my shop\nWould you like to see my wares?");
    }
    public static void Inn() {
        System.out.println("**You enter the inn and approach the barkeep**\nHow can I help you?");
    }
}

额外小建议

按照Java编码规范,方法名应该用小驼峰命名,比如把Shop()改成shop()、Inn()改成inn()(类名才用大驼峰),这样代码会更规范易读~

内容的提问来源于stack exchange,提问作者Alan Mc Gillivray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:32:54