2013-10-10 2 views
0

я должен создать программу для возвращения следующего неповторный характер ..Найти неповторный символ в строке

ех я даю ... tweet
и он должен вернуть выход в w ...

public class str_next { 

    public static void main(String args[]) throws Exception { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Enter the string"); 
     String s = br.readLine(); 
     revString(s); 
    } 

    static char revString(String str) { 
     int i = 0; 
     int j; 
     int n = str.length(); 
     for (i = 0; i < n; i++) { 
      for (j = i + 1; j < n; j++) { 
       char c = str.charAt(i); 
       char d = str.charAt(j); 
       if (c != d) { 
        System.out.print(d); 
       } 
      } 
     } 
    } 
} 

Я получаю сообщение об ошибке, как .. отсутствует оператор возврата ..

Может кто-нибудь пожалуйста, скажите мне .. Как решить такую ​​проблему .. Где я не прав? ..

+3

Вы добавить отсутствующий оператор возврата. –

+0

не повторяющееся слово или не повторяющееся письмо – SpringLearner

+1

Вы * печатаете * символ, а не * возвращаете * символ. Эти два варианта не совпадают. – DaoWen

ответ

0

Вы написали тип возвращаемого revString (ул String) как полукокса и вы не возвращает символ. Изменить этот тип возврата на void или добавить строку return d; методу

1

Чтобы решить проблему, просто добавьте,

return d; 

в функции. Но это лучше понять, как это на самом деле работает:

Функции/Методы записываются как

accessor_type return_type function_name(parameter_list) 
{ 
//stuff to do in your code 
} 

Для например,

public char returnChar(int a) 
|  |  |  | 
|  |  |  | 
^  ^ ^ ^
accessor return name parameter 

это означает, что эта функция возвращает символ.

В том смысле, что вам нужно полукокс, как это в вашей функции

return char; 

Попробуйте прочитать на методах и их типов возвращаемых значений. :)

Ссылки:

0

Вы отсутствующий оператор возврата в коде.

вот код, который возвращает то, что вы хотите

КОД

public static Character findFirstNonRepeated(String input) { 
    // create a new hashtable: 
    Hashtable<Character, Object> hashChar = new Hashtable<Character, Object>(); 

    int j, strLength; 
    Character chr; 
    Object oneTime = new Object(); 
    Object twoTimes = new Object(); 

    strLength = input.length(); 

    for (j = 0; j < strLength; j++) { 
     chr = new Character(input.charAt(j)); 
     Object o = hashChar.get(chr); 

     /* 
     * if there is no entry for that particular character, then insert 
     * the oneTime flag: 
     */ 
     if (o == null) { 
      hashChar.put(chr, oneTime); 
     } 
     /* 

    */ 
     else if (o == oneTime) { 
      hashChar.put(chr, twoTimes); 
     } 
    } 

    /* 
    * go through hashtable and search for the first nonrepeated char: 
    */ 

    int length = strLength; 
    for (j = 0; j < length; j++) { 
     chr = new Character(input.charAt(j)); 
     Object c = null; 
     if (hashChar.get(chr) == oneTime) 
      return chr; 
    } 
    /* 
    * this only returns null if the loop above doesn't find a nonrepeated 
    * character in the hashtable 
    */ 
    return null; 

} 

Используйте как этот

char my = findFirstNonRepeated("twwwweety"); 
System.out.println(my); 

Это будет возвращать y.

+0

В чем разница и почему? Решения для копирования-вставки разрешают * этот экземпляр * этой проблемы, но в долгосрочной перспективе не приносят пользы. – icedwater

+0

обновил мой ответ .. – BBdev

0

ваша программа должна выглядеть так:

импорт java.io.*;

общественного класса str_next {

public static void main(String args[]) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("Enter the string"); 
    String s = br.readLine(); 
    revString(s); 
} 

static char revString(String str) { 
    int i = 0; 
    int j; 
    int n = str.length(); 
    for (i = 0; i < n; i++) { 
     for (j = i + 1; j < n; j++) { 
      char c = str.charAt(i); 
      char d = str.charAt(j); 
      if (c != d) { 
       System.out.print(d); 
      } 
     } 
    } 
    return 0; 
} 

}

0

Добавить каждый символ в HashSet и проверить, возвращает ли hashset.add() верно, если она возвращает ложь, а затем удалить символ из HashSet. Тогда получение первого значения хешета даст вам первый не повторяющийся символ. Алгоритм:

for(i=0;i<str.length;i++) 
    { 
    HashSet hashSet=new HashSet<>() 
    if(!hashSet.add(str[i)) 
     hashSet.remove(str[i]) 
    } 
    hashset.get(0) will give the non repeated character. 
0

Попробуйте это, // Разделить строку в символы // Проверяем, если запись существует в HashMap, если вернуть Да-символ, если Нет- инертен элемент со значением 1

public static void main(String[] args) { 
    String s = "rep e atit"; 
    char c = nonRepeat(s); 
    System.out.println("The first non repeated character is:" + c); 
} 

private static char nonRepeat(String ss) { 
    char c; 
    HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); 

    for (int i = 0; i < ss.length(); i++) { 
     c = ss.charAt(i); // get each chaar from string 
     if (hm.containsKey(c)) {// char is already in map, increase count 
      hm.put(c, hm.get(c) + 1); 
      return c; 
     } else { 
      hm.put(c, 1); 
     } 

    } 

    return '0'; 
} 
0

в JAVA используя цикл только ..... это очень легко .... вы можете сделать это без коллекции в Java .. дзю улица попробовать .....

общественного класса FirstNonRepeatedString {

public static void main(String args[]) { 


    String input = "tweet"; 
    char process[] = input.toCharArray(); 
    boolean status = false; 
    int index = 0; 
    for (int i = 0; i < process.length; i++) { 
     for (int j = 0; j < process.length; j++) { 

      if (i == j) { 
       continue; 
      } else { 
       if (process[i] == process[j]) { 
        status = false; 
        break; 
       } else { 
        status = true; 
        index = i; 
       } 
      } 

     } 
     if (status) { 
     System.out.println("First non-repeated string is : " + process[index] + " INDEX " + index); 
     break; 
    } 
    } 
} 

}

0
public class JavaPractice { 

public static void main(String args[]) 
    { 
System.out.println("Enter input String"); 
     Scanner s= new Scanner(System.in); 
     String input= s.nextLine(); 
     int length=input.length(); 
     for(int i=0;i<length;i++) 
     { 
      int temp=0; 
      for(int j=0;j<length;j++) 
      { 
       if(input.charAt(i)==input.charAt(j)) 
       {temp++;} 
      } 
      if(temp==1) 
      {System.out.println(input.charAt(i));} 

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