我不确定此特定代码在哪里出错。有人可以帮我一些指导吗?
这是我的问题,以及我试图取得的结果。
通过用用户名(但不带首字母)替换“(名称)”,修改songVerse以播放“名称游戏”(OxfordDictionaries.com)。
例如:如果userName =“ Katie”和songVerse =“ Banana-fana fo-f(名称)!”,程序将打印: 香蕉-fana fo-fatie! 例如:如果userName =“ Katie”和songVerse =“ Fee fi mo-m(Name)”,程序将输出: 收费电影 注意:您可以假定songVerse将始终包含子字符串“(名称)”。
我上次尝试的代码...无论我输入什么,我都会得到相同的结果。我尝试了“ userName.substring()”的不同方案,但结果仍然相同。
import java.util.Scanner;
public class NameSong {
public static void main (String [] args) {
Scanner scnr = new Scanner(System.in);
String userName;
String songVerse;
userName = scnr.nextLine();
userName = userName.substring(1); // Remove first character
songVerse = scnr.nextLine();
// Modify songVerse to replace (Name) with userName without first character
songVerse = songVerse + userName.substring(1 , userName.length()); // this is where my problem is.
System.out.println(songVerse);
}
}
1个测试通过
所有测试通过
Run
Testing Katie and Banana-fana fo-f(Name)!
Output differs. See highlights below.
Your output
Banana-fana fo-f(Name)!tie
Expected output
Banana-fana fo-fatie!
Testing Walter and Banana-fana fo-f(Name)!
Output differs. See highlights below.
Your output
Banana-fana fo-f(Name)!lter
Expected output
Banana-fana fo-falter!
Testing Katie and Fee fi mo-m(Name)
Output differs. See highlights below.
Your output
Fee fi mo-m(Name)tie
Expected output
Fee fi mo-matie
答案 0 :(得分:0)
在这里,您已经从userName中删除了第一个字符,因此在第二行中,您无需再次删除它。 对于歌曲Verse,您需要从其中删除“(NAME)”,因此您可以在这里使用
songVerse = songVerse.replace("(NAME)","");
songVerse = songVerse+userName;
答案 1 :(得分:0)
方法substring(int begin,int end)允许从初始String处创建/创建一个子字符串,该字符串指示应从该字符开始和结束或仅开始的字符数。没有其他变体来编辑子字符串,尽管它不会成为新创建的字符串的一部分(在您的情况下为“ String songVerse”)。 object.replace()方法应将指示的“文本”(在您的情况下为“(名称)”)更改为您想要插入的任何内容,而不是依赖于字符的数量或类型,而不是之前或之后在“文字”之后。 Nicholas K提出的变体是正确的,应该可以使用,或者您可以尝试使用较短的变体,但是结果将是相同的:
public class NameSong {
public static void main (String [] args) {
Scanner scnr = new Scanner(System.in);
String userName;
String songVerse;
userName = scnr.nextLine();
songVerse = scnr.nextLine();
songVerse = songVerse.replace("(Name)", userName.substring(1));
System.out.println(songVerse);
}
}
答案 2 :(得分:0)
您的代码存在的问题是您没有尝试解决问题中描述的问题。
尝试执行以下步骤:
以下是一些提示:
您的代码很糟糕。 这是有关“注意细节”的更多信息
您的代码中没有循环; 这将读取一行歌词并执行一次替换。 计算歌词中的行数。 如果行数大于一, 那么您的技术肯定会失败。
如果您的代码中有一个循环,但决定不将其包含在代码中, 不要再说谎了。 我们不能帮助您修复您假装不存在的代码。
在一个理智的世界中, 用于替换的名称将恰好出现一次。 读一遍。
要替换字符串中的(名称),必须首先找到字符串中的(名称)。
答案 3 :(得分:0)
你在这里。
userName = scnr.nextLine();
userName = userName.substring(1); // Remove first character
songVerse = scnr.nextLine();
// Modify songVerse to replace (Name) with userName without first character
songVerse = songVerse.replace("(Name)", userName.substring(0));
System.out.println(songVerse);
} }
答案 4 :(得分:0)
这很简单
import java.util.Scanner;
public class NameSong {
public static void main (String [] args) {
Scanner scnr = new Scanner(System.in);
String userName;
String songVerse;
userName = scnr.nextLine();
userName = userName.substring(1); // Remove first character
songVerse = scnr.nextLine();
// Modify songVerse to replace (Name) with userName without first character
songVerse = songVerse.replace("(Name)", userName);
/* Your solution goes here */
System.out.println(songVerse);
}
}