我试图将多个字符串(歌曲名称)输入到数组中。然后,程序将要求用户为其中一首歌曲命名并告诉用户该歌曲在该阵列中的位置。
编辑:
感谢帮助人员。我已将两个循环设置为0并且我仍然遇到问题。
我对该计划有各种各样的问题。我收到ArrayIndexOutOfBoundsException
和NullPointerExeption
的运行时错误。
我应该怎样做才能使它发挥作用?。
提前感谢所有人。
代码:
import javax.swing.*; // import the swing library for I/O
class favsongs
{
public static void main (String[] param)
{
music();
System.exit(0);
} // END main
/* ***************************************************
Set up an array containing songs then find one asked for by the user
*/
public static void music()
{
// Declare variables
//
String key =""; //the thing looked for
int result = -1;// the position where the answer is found
String[] songs = new String[5];
// Ask for songs
for (p=0; p<=4; p++)
{
songs[p]=JOptionPane.showInputDialog("Song "+ p + "?");
}
// Ask user for a song
key = JOptionPane.showInputDialog("Name a song and i'll tell you what position you placed it in.");
for (int i=0; i<songs.length; i++)
{
if (songs[i].equals(key))
{
result = i;
}
else // Error message
{
JOptionPane.showMessageDialog(null,"Error!!");
break;
}
}
// Tells user the name of the song and what position in the array it is in
JOptionPane.showMessageDialog(null,"You placed " + key + " in position " + " " + result);
} // END music
} // END class favsongs
答案 0 :(得分:3)
看看这个循环:
for (p=1; p<=4; p++)
请注意,它从1开始。因此songs[0]
的默认值仍为null
。现在看看你如何使用数组:
for (int i=0; i<songs.length; i++)
{
if (songs[p].equals(key))
当我认为你的意思是p
时,你不仅在这里试图使用i
,而且 方式也会失败。使用p
将访问超出范围的songs[5]
,并使用i
将equals
上的songs[0]
调用为空。
希望这足以让你前进。其他几点:
p
声明为for
循环的一部分,那么您就不会能够错误地使用{{1}}。答案 1 :(得分:0)
// Ask for songs
for (p=1; p<=4; p++)
{
songs[p]=JOptionPane.showInputDialog("Song "+ p + "?");
}
这将使歌曲[0]未初始化。当您稍后尝试使用它时,您将获得NullPointerException。
答案 2 :(得分:0)
首先,将歌曲放入的循环从1开始,尝试设置p = 0,数组从零到长度-1。试试这个,看看它是否解决了问题
答案 3 :(得分:0)
你的问题似乎在这里:
for (p=1; p<=4; p++)
{
songs[p]=JOptionPane.showInputDialog("Song "+ p + "?");
}
在Java中,数组位置从0开始,以[arrayLength] - 1结束。
这样做可以解决您的问题:
for (p=0; p < song.length(); p++)
{
songs[p]=JOptionPane.showInputDialog("Song "+ p + "?");
}
Oracle的This教程应该可以帮助您入门。您可能还想查看ArrayList类,这样您就可以动态地将项目添加到列表中,如this简单教程中所示。