我正在尝试让自动平地机/编译器完成我的任务,以便为我提供与自动输入所需的完全匹配的分数。这是我的输出: 输入播放列表的标题:DANCE LIST PLAYLIST MENU
这是预期的输出: 输入播放列表的标题:舞蹈列表PLAYLIST MENU
这是我的代码页。当提交给ZyBooks时,此代码中确实还有其他问题。我可以稍后再发布。谢谢您的帮助。
public class SongEntry {
private String uniqueID;
private String songName;
private String artistName;
private int songLength;
SongEntry nextNode;
SongEntry() {
uniqueID = "";
songName = "";
artistName = "";
songLength = 0;
nextNode = null;
}
SongEntry(String uniqueID, String songName, String artistName, int songLength) {
this.uniqueID = uniqueID;
this.songName = songName;
this.songLength = songLength;
this.artistName = artistName;
this.nextNode = null;
}
public void insertAfter(SongEntry entry) {
SongEntry entries = this;
while (entries.nextNode != null) {
entries = entries.nextNode;
}
entries.nextNode = entry;
}
public void setNext(SongEntry entry) {
this.nextNode = entry;
}
public String getID() {
return this.uniqueID;
}
public String getSongName() {
return this.songName;
}
public String getArtistName() {
return this.artistName;
}
public int getSongLength() {
return this.songLength;
}
public SongEntry getNext() {
return this.nextNode;
}
public void printPlaylistSongs() {
System.out.println("Unique ID: " + getID());
System.out.println("Song Name: " + getSongName());
System.out.println("Artist Name: " + getArtistName());
System.out.println("Song Length(in seconds): " + getSongLength());
}
public void setSongName(String songName2) {
this.songName = songName2;
}
public void setUniqueID(String id) {
this.uniqueID = id;
}
public void setArtistName(String artistName2) {
this.artistName = artistName2;
}
public void setSongLength(int songLength2) {
this.songLength = songLength2;
}
}
import java.util.Scanner;
public class Playlist {
public static Scanner sc = new Scanner(System.in);
public static Scanner scInt = new Scanner(System.in);
public static SongEntry headSong = new SongEntry();
public static SongEntry tailSong = new SongEntry();
public static SongEntry allEntries;
public static int numberOfNodes = 0;
public static void printMenu(String playlistTitle)
{
System.out.println("\n"+playlistTitle.toUpperCase()+" PLAYLIST MENU");
System.out.println("a - Add song\nd - Remove song\nc - Change position of song\ns - Output songs by specific artist");
System.out.println("t - Output total time of playlist (in seconds)\no - Output full playlist\nq - Quit");
System.out.println("\nChoose an option:");
String option = sc.next();
boolean isEnter = option.equals("a") || option.equals("d") || option.equals("c") || option.equals("s") || option.equals("t") || option.equals("o") || option.equals("q");
if(isEnter)
{
switch(option.charAt(0))
{
case 'a': addSong();
printMenu(playlistTitle);
break;
case 'd': allEntries = removeSong(allEntries);
printMenu(playlistTitle);
break;
case 'c': allEntries = changeSongPosition(allEntries);
printMenu(playlistTitle);
break;
case 's': songsBySpecificArtist(allEntries);
printMenu(playlistTitle);
break;
case 't': totalTimeofPlaylist(allEntries);
printMenu(playlistTitle);
break;
case 'o': outputFullPlaylist(allEntries);
printMenu(playlistTitle);
break;
case 'q': break;
}
}
else
{
System.out.println("Invalid Choice !");
printMenu(playlistTitle);
}
}
public static void outputFullPlaylist(SongEntry entries)
{
int counter = 1;
if(entries != null)
{
System.out.println(counter+".");
entries.printPlaylistSongs(); // head node
counter++;
while(entries.nextNode != null) // all the remaining nodes
{
entries = entries.nextNode;
System.out.println(counter+".");
entries.printPlaylistSongs();
counter++;
}
}
else
{
System.out.println("Playlist is empty");
}
}
public static void addSong()
{
sc = new Scanner(System.in);
System.out.println("ADD SONG");
System.out.println("Enter song's Unique ID: ");
String songID = sc.next();
sc = new Scanner(System.in);
System.out.println("Enter song's name: ");
String songname = sc.nextLine();
sc = new Scanner(System.in);
System.out.println("Enter artist's name: ");
String artistName = sc.nextLine();
System.out.println("Enter song's length(in seconds): ");
int songlength = scInt.nextInt();
SongEntry entry = new SongEntry(songID, songname, artistName, songlength);
if(allEntries == null)
{
headSong = entry; // this is the head
allEntries = entry;
tailSong = entry; // this is the tail
numberOfNodes++;
}
else
{
allEntries.insertAfter(entry);
tailSong = entry;
numberOfNodes++;
}
}
public static SongEntry removeSong(SongEntry entries)
{
System.out.println("Enter the song's unique ID: ");
String id = sc.next();
SongEntry newEntry = null, entry=null;
int counter = 0;
while(entries != null)
{
if(counter!=0)
{
newEntry.nextNode = null;
newEntry = newEntry.nextNode;
}
if(!entries.getID().equals(id))
{
newEntry = new SongEntry();
newEntry.setUniqueID(entries.getID());
newEntry.setSongName(entries.getSongName());
newEntry.setArtistName(entries.getArtistName());
newEntry.setSongLength(entries.getSongLength());
if(entry == null)
entry = newEntry;
else
entry.insertAfter(newEntry);
counter++;
}
else
{
System.out.println(entries.getSongName()+" removed");
numberOfNodes--;
}
entries = entries.nextNode;
}
return entry;
}
public static SongEntry changeSongPosition(SongEntry entries)
{
System.out.println("CHANGE POSITION OF SONG");
System.out.println("ENTER song's current position: ");
int currentPos = scInt.nextInt();
System.out.println("Enter new position of song: ");
int newPos = scInt.nextInt();
SongEntry currentPosEntry = null, entry = null, newPosEntry = null, returnEntry = null;
entry = entries;
int counter = 1;
// System.out.println("Number of nodes: " + numberOfNodes);
if(newPos<1)
newPos = 1;
else if(newPos>numberOfNodes)
newPos = numberOfNodes;
System.out.println("cuurent pos: "+currentPos);
System.out.println("new pos: "+newPos);
for(int i=1; i<=numberOfNodes; i++)
{
if(i==currentPos)
currentPosEntry = entries;
else if(i==newPos)
newPosEntry = entries;
else
entries = entries.nextNode;
}
// System.out.println("After for loop");
//System.out.println("Current song details" ); currentPosEntry.printPlaylistSongs();
// System.out.println("New song details"); newPosEntry.printPlaylistSongs();
entries = entry;
while(counter <= numberOfNodes+1)
{
if(counter == currentPos) // we need to adjust the current position
{
entries = entries.nextNode;
if(entries !=null)
{
entry = new SongEntry(entries.getID(), entries.getSongName(), entries.getArtistName(), entries.getSongLength());
if(returnEntry == null)
returnEntry = entry;
else
returnEntry.insertAfter(entry);
entries = entries.nextNode;
}
counter++;
}
else if(counter == newPos)
{
entry = currentPosEntry;
entry.nextNode = null;
if(returnEntry == null)
returnEntry = entry;
else
returnEntry.insertAfter(entry);
counter++;
}
else
{
if(entries !=null)
{
entry = new SongEntry(entries.getID(), entries.getSongName(), entries.getArtistName(), entries.getSongLength());
if(returnEntry == null)
returnEntry = entry;
else
returnEntry.insertAfter(entry);
entries = entries.nextNode;
}
counter++;
}
}
return returnEntry;
}
public static void totalTimeofPlaylist(SongEntry entries)
{
System.out.println("OUTPUT TOTAL TIME OF PLAYLIST (IN SECONDS)");
int totalSeconds = entries.getSongLength();
entries = entries.nextNode;
while(entries != null)
{
totalSeconds += entries.getSongLength();
entries = entries.nextNode;
}
System.out.println("Total Time: "+totalSeconds+" seconds");
}
public static void songsBySpecificArtist(SongEntry entries)
{
sc = new Scanner(System.in);
System.out.println("OUTPUT SONGS BY SPECIFIC ARTIST");
System.out.println("Enter artist's name: ");
String artistname = sc.nextLine();
while(entries != null)
{
if(entries.getArtistName().equals(artistname))
{
entries.printPlaylistSongs();
}
entries = entries.nextNode;
}
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("Enter playlist's title:");
sc = new Scanner(System.in);
String title = sc.nextLine();
printMenu(title);
}
}
答案 0 :(得分:0)
您的问题在于toUppperCase()会大写整个字符串。
public static String capitalizeWord(String str){
String words[]=str.split("\\s");
String capitalizeWord="";
for(String w:words){
String first=w.substring(0,1);
String afterfirst=w.substring(1);
capitalizeWord+=first.toUpperCase()+afterfirst+" ";
}
return capitalizeWord.trim();
}
要打印,您可以这样做:
//to ensure all other letters are lowercase
playlistTitle.toLowerCase();
//to capitalize first letters
System.out.println("\n"+ capitalizeWord(playlistTitle) +" PLAYLIST MENU");
在https://www.javatpoint.com/java-program-to-capitalize-each-word-in-string 找到capitalizeWord()