我正在学习java编程的小课程,我正在为我的任务创建一个音乐盒。用户将输入一个字符串,它是'音乐笔记',但它可能包含与音乐笔记无关的其他字符(又名So-Fa名字,DRMFSLT)。我必须过滤用户输入字符串,并在大写字母中返回包含正确音乐笔记的字符串。如何过滤用户输入字符串并存储新的过滤数组
例如,用户输入 'd我ř p 中号 $ ˚F q 小号瓦特大号吨' 返回 'DRMFSLT'。
这是我到目前为止有:
public class Song {
String notes;
public Song(String music) {
notes = music;
char[] store = new char[notes.length()-1];
for (int i = 0; i < notes.length(); i++) {
store[i] = notes.charAt(i);
}
char[][] valid = {{'D','R','M','F','S','L','T'},{'d','r','m','f','s','l','t'}};
char[] clean = new char[store.length];
int a = 0;
for (int i = 0; i < store.length; i++) {
for (int j = 0; j < valid.length; j++) {
for (int k = 0; k < valid[0].length; k++) {
if (store[i] == valid[j][k]) {
valid[0][k] = clean[a];
a++;
}
}
}
}
notes = String.valueOf(clean);
System.out.print(String.valueOf(clean));
}
然而,当我运行它,没有输出显示。它根本不起作用,我不知道为什么。有人能够启发我,并建议一个更好的方法来做到这一点?谢谢。
在我看来,您从来没有将任何东西置于干净的位置 – Ishnark
为商店编辑您的赋值,因为它的大小数组而不是元素编辑它是'notes.length()'而不是'notes.length() - 1' – abcOfJavaAndCPP
是啊我知道它是数组的大小,但数组的索引从0开始,所以数组的大小应该是length-1。我错了吗?无论如何,我会改变它notes.length(),它似乎更准确。 – issy