2014-11-16 4 views
0

Программа, чтобы проверить, является ли первый символ в строке пунктуацией, и если это так, удалите этот символ и верните новое слово.проверить, является ли символ пунктуацией

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; 
} 

}

+1

См. Проблему с препинанием. – sumanta

+0

Что именно не работает? Вы получаете сообщение об ошибке? – furkle

+0

Программа будет запущена, но она даст исключение NullPointerException и не удалит первый символ, adasd все равно будет, asdasd – newbie

ответ

1

Работы для меня.

public static void main(String[] args) { 
    System.out.println(checkStart(",abcd")); 
} 

выход:

abcd 

Вы, вероятно, есть ошибка в вашем главного метода.

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")); 
    } 
} 

Это был выход:

Test

Тест

Test

Испытание

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")); 
    } 
} 

Таким образом, вы можете получить '; dgjHJK' в качестве возврата. Если есть несколько ключевых слов, и вы хотите подстроить только с первого, добавьте break; во второй цикл в checkStart.

Удачного дня!

+0

, если вы хотите после ';' вы меняете «j» на «j + 1» в параметре подстроки –

1

Программа для проверки, если первый символ в строке является пунктуация

На самом деле это не совсем то, что. Подумайте, что произойдет, если вы введете «.,; Hello» - в этом случае вы вернетесь «Привет». С другой стороны, если вы введете «;», «Hello», вы вернетесь «, .Hello» - это потому, что вы проходите массив последовательно, а в первом случае пунктуация находится в правильном порядке для каждый символ должен быть пойман, но во втором случае ни запятая, ни период не находятся в нулевом положении, когда вы смотрите на пунктуацию [0] или пунктуацию [1]. Я не уверен, что одно из этих поведений - это то, что вы считаете неправильным, но я думаю, что хотя бы один из них неверен.

Смежные вопросы