我是编程新手,我可能会问一个愚蠢的问题,但我真的需要帮助。
我正在学习集合的工作原理,我从 ArrayList
开始。
我决定制作一个扑克牌的ArrayList
,添加了我想在实践中测试的方法(显示元素、显示特定元素等)。但这不起作用。当我将类型从 Arraylist 更改为常规数组 (Karta[] karty) 时,它的工作方式应该如此,所以我知道我在集合方面做错了。问题是我不知道是什么,因为我刚刚开始使用集合。
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Main {
static ArrayList<Karta> karty = new ArrayList<Karta>();
static Random rand = new Random();
static int wartosc;
static int kolor;
public static void utworz(){
while(wartosc !=0){
wartosc = rand.nextInt(13);
kolor = rand.nextInt(3);
Karta karta = new Karta(wartosc, kolor);
karty.add(karty.size()-1,karta);
}
}
public static void wyswietl(){
for(int i=0; i<karty.size();i++)
System.out.println(karty.toString());
}
public static int wyswietlIlosc(){
return karty.size();
}
public static void wyswietlOWartosci(int w){
for(Karta k: karty){
if(k.wartosc == w){
System.out.println(k.toString());
}
}
}
public static void wyswietlOKolorze(int kl){
for(Karta k: karty){
if(k.kolor == kl){
System.out.println(k.toString());
}
}
}
public static void main(String[] args){
int wybor =-1;
Scanner sc = new Scanner(System.in);
int wartosc;
int kolor;
System.out.println("Wybierz co chcesz zrobic:\n0. Zakoncz dzialanie programu\n1. Utworz nowa liste kart\n2. Wyswietl obecna liste kart\n3. Wyswietl liczbe kart w obecnej liscie\n4. Wyswietl karty z listy o podanej wartosci\n5. Wyswietl karty o podanym kolorze");
while(wybor !=0) {
wybor = sc.nextInt();
switch (wybor) {
case 1:
utworz();
System.out.println("Utworzono");
break;
case 2:
wyswietl();
break;
case 3:
wyswietlIlosc();
break;
case 4:
System.out.println("Podaj wartosc (1 - as, 13 - krol): ");
wartosc = sc.nextInt();
wyswietlOWartosci(wartosc);
break;
case 5:
System.out.println("Podaj kolor (0 - kier 1 - karo 2 - trefl 3 - pik): ");
kolor = sc.nextInt();
wyswietlOKolorze(kolor);
break;
default:
utworz();
break;
}
}
}
}
当我尝试查看 ArrayList 的元素时没有任何反应
最佳答案
当您的列表为空(因此在开始时)时,您尝试添加 Karta
对象 -1
索引在这里
karty.add(karty.size()-1,karta);
这是行不通的。只需使用
karty.add(karta);
<小时/>
此外,对变量/类型/...使用英文名称也是一个好习惯 - 当然,它不会改变您的应用程序逻辑,但在与他人共享代码时会更具可读性其他程序员
<小时/>编辑
如UnholeSheep在下面的评论中指出add
尝试在 <0
上添加值时,方法应该引发异常索引,但由于 wartosc
的值,您的代码永远不会到达此行变量 - 它被初始化为 0 并且因为在 1
的情况下您没有将其设置为任何值它没有初始化您的数组。
您还需要解决这个问题
关于java - 项目没有添加到我的 ArrayList 中或者没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42697860/