2013-02-15 3 views
2

У меня есть следующий код:Как подсчитать ключевые символы?

import java.util.Scanner; 

public class chara{ 

    public static void main(String[]args){ 


    Scanner input = new Scanner(System.in); 

    System.out.println("Input a string"); 

    String user=input.nextLine(); 

    if(user.length()<7) 

    { 

     return; 

    } 

    else 

    { 



    } 

    System.out.println("now input a letter to be replaced"); 

    String letter = input.next(); 

    String user2 = user.replace(letter, "-"); 

    String user3 = user.replace(letter, ""); 

    System.out.println(user2); 

    System.out.println(user3); 

    } 
} 

код должен сделать три вещи взять строку и букву и:

  1. заменить ключ букву в строке с «-»
  2. удалите букву строки
  3. подсчитайте количество раз, когда появится ключевая буква.

В настоящее время у меня есть две проблемы. Я не знаю, как подсчитать количество раз, которое появляется буква , потому что технически это строка, а не символ, и я не знаю, как считать строки . Во-вторых, мне нужно сделать так, чтобы, если строки не имеют нужной длины, то просто запрашивает снова, а не выходит из программы. Я попытался использовать метод getString(), но по какой-то причине он всегда говорит, что метод не определен.

+0

a String - это массив символов. – amphibient

+0

Возможно, сделайте некоторое исследование о том, как возвращаться назад и задавать вопрос снова и снова в зависимости от того, нужен ли вход для вас. Это будут ключевые слова java для «или» или «пока», которые задействованы в циклировании. –

+0

Подсчет будет аналогичной проблемой. Одним из способов является поиск, начиная с столбца 0 для символа, подсчитывать его, если найдено, и цикл для поиска, начинающийся непосредственно за столбцом, в котором вы его нашли. Другая стратегия заключается в преобразовании String в массив char (char []), а затем цикл через проверку и подсчет массива. Это некоторые вещи, на которые вы могли бы воспользоваться Google. –

ответ

1

С полным доверием u ser1324109 для решения проблемы № 1, вот как вы можете решить свою проблему # 2:

import java.util.Scanner; 

public class StringReader { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String user1 = "", user2 = "", user3 = ""; 
     int count = 0; 
     while(user1.equals("") || user1.length() < 7) { 
      System.out.println("Input a string"); 
      user1 = input.nextLine(); 
     } 
     if(!user1.equals("")) { 
      System.out.println("now input a letter to be replaced"); 
      String letter = input.next(); 
      user2 = user1.replace(letter, "-"); 
      user3 = user1.replace(letter, ""); 
      System.out.println(user2); 
      System.out.println(user3); 
      count += (user1.length() - user3.length()); 
      System.out.println("letter was found to be present "+count+" times"); 
     } 
    } 
} 
+0

извинения, хороший сэр, я даже не видел этого. Благодаря! – eflam117

3

Для выпуска № 1:

Вблизи верхней части основного метода:

int count = 0; 

После user3 назначается:

count += (user3.length() - user.length()); 
+0

+1 Мне нравится этот путь. –

+0

Это было очень полезно, спасибо. Как ни странно, я только что нашел способ конвертировать строки в char, но это проще, так что спасибо – eflam117

+0

lol также я переключился на user-user3, потому что получал отрицательный номер – eflam117

0

Чтобы помочь с проблемой # 3:

int count = 0; 

    for(char c : user.toCharArray()){ 
     if (c == letter.charAt(0)) count++; 
    } 

    System.out.println("Number of occurences: "+count); 
Смежные вопросы