【发布时间】:2015-12-09 22:44:52
【问题描述】:
我正在尝试为一个项目编写代码。该项目包括添加、删除、改组和重新排序(移动)字符串。
我目前被困在洗牌上。我正在使用import java.util.Collections,但我被卡住了。我的意思是通过使用下面的代码我得到一个异常:
private static void ShuffleTrack(int[] array) {
Collections.swap(mp3Player, 0, 1);
System.out.println(""+mp3Player);
}
这是我得到的例外:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at java.util.Collections.swap(Collections.java:497)
at mp3Player.ShuffleTrack(mp3Player.java:78)
at mp3Player.main(mp3Player.java:40)
我在实际程序中没有收到任何错误,只是控制台。
这里是代码
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class mp3Player {
public static Scanner in=new Scanner(System.in);
public static ArrayList<Track> mp3Player = new ArrayList<Track>();
public static void main(String[] args ){
//declare variables
int menu = 0;
do{
System.out.println("***WELCOME***");
System.out.println(" This is my MP3 Album ");
System.out.println("Please Choose one of the following options:");
System.out.println("1.Add a Track");
System.out.println("2.Search for a Track");
System.out.println("3.Delete an exisiting Track");
System.out.println("4.Shuffle Tracks");
System.out.println("5.Reorder Tracks");
menu = in.nextInt(); //Record user choice
switch(menu){
case 1:
InsertTrack();
break;
//case 2:
//SearchTrack();
// break;
//case 3:
//DeleteTrack();
//break;
case 4:
ShuffleTrack(null);
//break;
case 5:
//ReorderTrack();
//break;
}//end of switch
} while(menu !=0); //End of loop
} // End of static void
private static void InsertTrack(){
Track newtrack = new Track();
System.out.println("Track Number: ");
int Tracknumber = in.nextInt();
System.out.println("Artist Name: ");
String TrackArtist = in.next();
System.out.println("Track Name: ");
String TrackName = in.next();
System.out.println("Track Duration: ");
String TrackDuration = in.next();
System.out.println("Your Track has been added.");
newtrack.setTrack(Tracknumber, TrackArtist, TrackName, TrackDuration);
}//End of InsertTrack
private static void ShuffleTrack(int[] array){
Collections.shuffle(Arrays.asList(mp3Player));
}//End Of ShuffleTrack
//Set Attributes
private String InsertTrack ="";
private String SearchTrack ="";
private String DeleteTrack = "";
private String ShuffleTrack = "";
private String ReorderTrack = "";
// Setting Methods
public void setMp3(String InsertTrack, String SearchTrack, String DeleteTrack, String ShuffleTrack, String ReorderTrack){
this.InsertTrack = InsertTrack;
this.SearchTrack = SearchTrack;
this.DeleteTrack = DeleteTrack;
this.ShuffleTrack = ShuffleTrack;
this.ReorderTrack = ReorderTrack;
}// End of Method
public String getInsertTrack(){
return InsertTrack;
}
public String getSearchTrack(){
return SearchTrack;
}
public String getDeleteTrack(){
return DeleteTrack;
}
public String getShuffleTrack(){
return ShuffleTrack;
}
public String ReorderTrack(){
return ReorderTrack;
}
}//课程结束
【问题讨论】:
-
我删除了你的“新问题”。如果您还有其他问题,请创建一个。您不应该在一篇文章中提出多个问题。
-
堆栈跟踪显示
mp3Player(显然是ArrayList)在您尝试交换索引0和1处的(不存在的)元素时为空。我们无法告诉你为什么它是空的,但很明显你不能交换不存在的元素。 -
好吧,我有点理解,由于某种原因,它基本上表明我没有添加任何东西;/我还有一个添加轨道选项,我添加了轨道,我添加了一些和仍然显示相同的错误;/。 抱歉添加第二个问题
-
@Vickz,此时,列表显然是空的。如果您需要帮助解决该错误,您需要发布更多内容。
-
考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将导致更少的混乱和更好的响应
标签: java arrays collections shuffle