im довольно новый при кодировании. У меня есть множество фильмов. Что я пытаюсь сделать, это удалить фильм с наименьшим количеством продаж. В моем методе «remover», расположенном в классе кассовых сборов, я получаю сообщение об ошибке «int не может быть разыменован» в строке, включая этот код »((movies.get (i) .sales) .equals (small))». также я назвал метод remove, чтобы удалить его из массива, но я угадал, что удаление isnt законно в java. Какой вызов мне нужно сделать, чтобы удалить его из массива и обновить длину.Как удалить элемент в массиве строк
import java.util.*;
public class LIANGLAB1p2
{
public static void main(String[] argv)
{
BoxOffice bo = new BoxOffice();
bo.add(new Movie("starboat","pg","action"));
bo.add(new Movie("bloody banquet","pg-13","horror"));
bo.add(new Movie("godizilla eats tokyo","pg","horror"));
bo.add(new Movie("geeks in love","pg","comedy"));
bo.add(new Movie("bad cop, worse cop","r","comedy"));
bo.add(new Movie("lost of bullets","r","action"));
bo.add(new Movie("the eliminator","r","action"));
bo.add(new Movie("the garbage collector","pg","comedy"));
bo.add(new Movie("the dentist","r","comedy"));
bo.add(new Movie("the professor","r","horror"));
bo.add(new Movie("bloody noon", "r", "action"));
for(int i=0;i<200;i++) bo.sellticket("the professor");
for(int i=0;i<100;i++) bo.sellticket("starboat");
for(int i=0;i<120;i++) bo.sellticket("the eliminator");
for(int i=0;i<10;i++) bo.sellticket("bloody banquet");
for(int i=0;i<40;i++) bo.sellticket("the dentist");
for(int i=0;i<25;i++) bo.sellticket("geeks in love");
bo.listmovie();
bo.genrecounter();
System.out.println("The most popular genre is " +bo.genrecounter());
System.out.println("The most popular movie is " +bo.mostpopular());
System.out.println("The sales have been reset to 0");
bo.reset();
}
}
class Movie
{
public int sales;
public int genr;
public String title;
public String rating;
public String genre;
public Movie (String t, String r, String g){
title = t; rating = r; genre = g; sales = 0; genr = 0;
}
public String toString(){
return title+ " - rated " +rating+" - genre: "+genre;
}
}
class BoxOffice{
List<Movie> movies = new ArrayList<>();
public double ticketprice;
public void changeprice(double newprice){
ticketprice = newprice;
}//changeprice
public BoxOffice(){ // constructor
ticketprice = 10.00;
}//BoxOffice
public void add(Movie m){ //adds movie
movies.add(m);
}//add
public void listmovie(){ //prints list of all movies
for (int i=0; i<movies.size(); i++)
{
System.out.println(movies.get(i).toString());
}
}//listmovie
public int get(String t){ //gets movie by title
for (int i=0; i<movies.size(); i++)
if (t.equals(movies.get(i).title)){
return i;
}
return -1;
}//get
public void sellticket(String m){
int i = get(m);
if (i>=0)
movies.get(i).sales +=1;
else
System.out.println("that movie is currently not showing");
}//sellticket
public String mostpopular() { //returns name of most popular movies
String ax = "";
int bx = -1;
for (int i=0;i<movies.size();i++)
if (movies.get(i).sales>bx)
{
ax = movies.get(i).title;
bx = movies.get(i).sales;
}
return ax;
}//mostpopuler
public void reset(){
for (int i=0;i<movies.size();i++){
movies.get(i).sales = 0;
}
}
public void remover(){
int small = movies.get(0).sales;
for (int i=0;i<movies.size();i++){
if (movies.get(i).sales < small)
small = movies.get(i).sales;
}
for (int i=0;i<movies.size();i++){
if ((movies.get(i).sales).equals(small))
remove(movies.get(i));
}
}
public String genrecounter(){ //returns most populer genre
int horror = 0;
int action = 0;
int comedy = 0;
for (int i=0;i<movies.size();i++)
if ((movies.get(i).genre).equals("horror")){
horror++;
}
else if((movies.get(i).genre).equals("comedy")){
comedy++;
}
else {
action++;
}
if (horror > action || horror > comedy){
return "horror";
}
else if (action > comedy || action > horror){
return "action";
}
else {
return "comedy";
}
}
}//BoxOffice
Хотя вы продолжаете говорить «массив», 'movies' является [' List'] (http://docs.oracle.com/javase/8/docs/api/java/util/List.html). – Powerlord
its = new ArrayList <> хотя, значит, это не массив? –
В то время как 'ArrayList' использует массив в качестве резервного хранилища, вы не работаете с ним напрямую. В этом отношении, поскольку 'movies' объявлен как« List 'как его тип, он может быть создан как« LinkedList »или« CopyOnWriteArrayList », а другой код останется прежним. Это связано с тем, что вы программируете против интерфейса «List», а не «ArrayList». –
Powerlord