返回一些东西而不是返回null

时间:2020-04-29 23:44:14

标签: java

我正在尝试分割字符串

这里是物品 但是如果字符串是GTA ONE 我想忽略ONE 只需输入GTA

打印出所有以GTA开头的游戏

GTA ONE
GTA THREE
GTA FOUR
GTA FIVE

但不能因为“ GTA ONE”而失败

错误是当我键入“ GTA”时出现的。

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

我要消除空值。

仅当没有游戏时才返回null值。 有人可以向我解释吗? 谢谢。

class Game{
   private String name;
   public Game(String name{
    this.name = name;
   }

   public String getName(){return name};

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

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


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[]){
   new Shop().sell();
}

private Game game(String name){
   ArrayList<Product> tempGames = new ArrayList<Product>();
        boolean fix2 = false;
        for(Game game: games)
            if(game.hasGame(name)){

               return game;
            }
            else if(game.getName().contains(name)){
                 tempGames.add(game);
                 fix2 = true;
            }
        if(fix2)
            for(Game tempGame: tempGames)
                 System.out.println(tempGame);
        return null;
   }
}
private void sell() {
        String name = "GTA";
        Game game = game(name);
        if(game != null){
               System.out.println("Selling " + name);

        }
        else{
            System.out.println(name + " does exist in the store.");
        }
    }

1 个答案:

答案 0 :(得分:2)

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

除此之外,还必须更正方法sellgame以符合您的要求。方法game需要返回一个List<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.");
        }
    }
}

输出:

Selling: 
GTA ONE
GTA THREE
GTA FOUR
GTA FIVE

XYZ does not exist in the store.