Java 返回某物而不是返回null

Java 返回某物而不是返回null,java,Java,我在试着分开一根线 这是物品 但是如果字符串是GTA ONE 我想忽略一个 只需输入GTA GTA ONE GTA THREE GTA FOUR GTA FIVE 打印以GTA开头的整个游戏 GTA ONE GTA THREE GTA FOUR GTA FIVE 但它不能因为“GTA一号”而失败 错误是当我输入“GTA”时 它确实返回所有匹配的“GTA”和null 我想消除null 值null只应在没有游戏时返回。 有人能给我解释一下吗? 谢谢 类游戏{ 私有字符串名称; 公共游戏(字符串名

我在试着分开一根线

这是物品 但是如果字符串是
GTA ONE
我想忽略
一个

只需输入
GTA

GTA ONE
GTA THREE
GTA FOUR
GTA FIVE
打印以GTA开头的整个游戏

GTA ONE
GTA THREE
GTA FOUR
GTA FIVE
但它不能因为“GTA一号”而失败

错误是当我输入“GTA”时

它确实返回所有匹配的“GTA”和null

我想消除null

值null只应在没有游戏时返回。 有人能给我解释一下吗? 谢谢

类游戏{
私有字符串名称;
公共游戏(字符串名称){
this.name=名称;
}
公共字符串getName(){return name};
公共布尔hasGame(字符串名称){
返回name.equalsIgnoreCase(this.name);
}
@凌驾
公共字符串toString(){
返回名称+“”+版本;
}
}
班级商店{
私人LinkedList游戏=新建LinkedList();
公共商店(){
游戏。添加(新游戏(“GTA ONE”);
游戏。添加(新游戏(“Sonic One”);
游戏。添加(新游戏(“GTA三”);
游戏。添加(新游戏(“GTA四”);
游戏。添加(新游戏(“GTA五”);
}
公共静态void main(字符串参数[]){
新商店出售;
}
私人游戏(字符串名称){
ArrayList tempGames=新建ArrayList();
布尔fix2=false;
用于(游戏:游戏)
if(game.hasGame(name)){
回归游戏;
}
else if(game.getName().contains(name)){
添加(游戏);
fix2=真;
}
如果(修正2)
用于(游戏tempGame:tempGames)
System.out.println(tempGame);
返回null;
}
}
私人买卖{
String name=“GTA”;
游戏=游戏(名称);
如果(游戏!=null){
System.out.println(“销售”+名称);
}
否则{
System.out.println(商店中确实存在name+);
}
}

由于您没有比较全名,因此需要在
hasGame
中使用
contains
而不是
equalsIgnoreCase

除此之外,
sell
game
方法也必须进行更正,以符合您的要求。方法,
game
需要返回一个
列表
,因此您需要更改方法,
sell

按如下方式操作:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

class Game {
    private String name;

    public Game(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public boolean hasGame(String name) {
        return this.name.contains(name);
    }

    @Override
    public String toString() {
        return name;
    }
}

public class Shop {
    private LinkedList<Game> games = new LinkedList<Game>();

    public Shop() {
        games.add(new Game("GTA ONE"));
        games.add(new Game("Sonic One"));
        games.add(new Game("GTA THREE"));
        games.add(new Game("GTA FOUR"));
        games.add(new Game("GTA FIVE"));
    }

    public static void main(String args[]) {
        Shop shop = new Shop();
        shop.sell("GTA");
        System.out.println();
        shop.sell("XYZ");
    }

    private List<Game> game(String name) {
        List<Game> tempGames = new ArrayList<Game>();
        for (Game game : games) {
            if (game.hasGame(name)) {
                tempGames.add(game);
            }
        }
        return tempGames;
    }

    private void sell(String name) {
        List<Game> games = game(name);
        if (!games.isEmpty()) {
            System.out.println("Selling: ");
            for (Game game : games) {
                System.out.println(game);
            }
        } else {
            System.out.println(name + " does not exist in the store.");
        }
    }
}

name
应该是
GTA
edition
ONE
?还是在输入时将整个字符串存储在
name
中?您需要提供更多的代码,以便更清楚地了解您可能发布的内容。@darclander您是对的,它应该是整个字符串sry。我只是编辑它。@pczeus这是真的。@pczeusl我拥有的代码。我可以回答您关心的问题。哪个
game.getName()
给了您NullPointerException?它太多了。
Selling: 
GTA ONE
GTA THREE
GTA FOUR
GTA FIVE

XYZ does not exist in the store.