【发布时间】:2017-04-05 16:46:30
【问题描述】:
我正在学习关于 Java 编程的次要课程,并且正在完成我创建音乐盒的任务。用户将输入一个字符串,即“音符”,但它可能包含与音符无关的其他字符(又名 So-Fa 名称,DRMFSLT)。我必须过滤用户输入字符串并返回一个包含正确音符的字符串,以大写形式。
例如,用户输入 'DirpM$FqswL2t' 返回 '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));
}
但是,当我运行它时,没有显示输出。它根本不起作用,我不知道为什么。有人可以启发我并提出更好的方法吗?谢谢。
【问题讨论】:
-
在我看来你从来没有真正把任何东西放在干净的地方
-
编辑您为 store 分配的值,因为它是数组的大小,而不是元素将其编辑为
notes.length()而不是notes.length()-1 -
是的,我知道它是数组的大小,但是数组的索引从 0 开始,所以数组的大小应该是长度为 1。我弄错了吗?反正我会把它改成notes.length(),看起来确实更准确。
标签: java arrays string input netbeans