编程以检查字符串中的第一个字符是否为标点符号,如果是,则删除该字符并返回新单词。
public static String checkStart(String word){
char [] punctuation = {'.' , ',' , ';' , ':', '?' , '!' , '"' , '\'' , ')' , '('};
int i;
for (i = 0; i < punctuation.length;i++){
if(word.charAt(0) == punctuation[i]){
word = word.substring(1);
}
}
return word;
}
为什么不起作用?
这是方法调用者
public static String[] removePunctuation(String [] words){
int i, j;
for (i = 0; i < words.length;i++){
words[i] = checkStart(words[i]);
}
return words;
}
}
答案 0 :(得分:1)
适合我。
public static void main(String[] args) {
System.out.println(checkStart(",abcd"));
}
输出:
abcd
您的主方法可能有错误。
答案 1 :(得分:1)
编程以检查字符串中的第一个字符是否为标点符号
这实际上并没有做到这一点。想想如果你输入&#34;。,; Hello&#34;会发生什么? - 在这种情况下,你会回来&#34;你好&#34;。另一方面,如果你输入&#34;;,。Hello&#34;,你就会回来&#34;,。Hello&#34; - 这是因为你按顺序遍历数组,并且在第一种情况下,标点符号的顺序是每个符号被捕获的顺序,但在第二种情况下,当你是时,逗号和句点都不在零位。看标点符号[0]或标点符号[1]。我不确定这些行为中的一个是否是您发现的错误,但我认为其中至少有一个是不正确的。
答案 2 :(得分:0)
我把你的代码放入我的netbeans中,似乎运行正常:
public class Test{
public static String checkStart(String word){
char [] punctuation = {'.' , ',' , ';' , ':', '?' , '!' , '"' , '\'' , ')' , '('};
int i;
for (i = 0; i < punctuation.length;i++){
if(word.charAt(0) == punctuation[i]){
word = word.substring(1);
}
}
return word;
}
public static void main(String args[]){
System.out.println(checkStart("test"));
System.out.println(checkStart("!test"));
System.out.println(checkStart(";test"));
System.out.println(checkStart("(test"));
}
}
这有输出:
测试
测试
测试
测试
答案 3 :(得分:0)
我不确切知道,但我想你想在一些特定的角色之后得到字符串。 所以我改变了下面的代码。
package org.owls.test;
public class CheckStart {
private static String checkStart(String word){
char [] punctuation = {'.' , ',' , ';' , ':', '?' , '!' , '"' , '\'' , ')' , '('};
int i;
for (i = 0; i < punctuation.length;i++){
for(int j = 0; j < word.length(); j++){
if(word.charAt(j) == punctuation[i]){
word = word.substring(j);
}
}
}
return word;
}
public static void main(String[] args) {
System.out.println(checkStart("gasf;dgjHJK"));
}
}
所以你可以得到&#39;; dgjHJK&#39;作为回报。如果有多个关键字并且您只想从第一个子串中进行子串,则在checkStart中将break;
添加到第二个循环。
祝你有个美好的一天!