Я очень новичок в Java и в качестве стартера мне предложили попробовать это дома.Слово в строке java
Напишите программу, которая найдет число вхождений меньшей строки в большую строку как часть ее, а также отдельное слово. Например,
Bigger string = "I AM IN AMSTERDAM", меньшая строка = "AM".Вывод: В составе строки: 3, как часть слова: 1.
В то время как я сделал гвоздь второй части (как часть слова), и даже если бы мой идти на сначала (поиск слова как части строки), я просто не понимаю, как взломать первую часть. Он продолжает показывать 1 для меня с примером ввода, где он должен быть 3.
Я определенно сделал ошибку - я буду очень благодарен, если вы могли бы указать на ошибку и исправить ее. В качестве запроса я любопытный ученик, поэтому, если это возможно (по вашей воле), пожалуйста, предоставьте объяснение, почему так.
import java.util.Scanner;
public class Program {
static Scanner sc = new Scanner(System.in);
static String search,searchstring;
static int n;
void input(){
System.out.println("What do you want to do?"); System.out.println("1.
Search as part of string?");
System.out.println("2. Search as part of word?");
int n = sc.nextInt();
System.out.println("Enter the main string"); searchstring =
sc.nextLine();
sc.nextLine(); //Clear buffer
System.out.println("Enter the search string"); search = sc.nextLine();
}
static int asPartOfWord(String main,String search){
int count = 0;
char c; String w = "";
for (int i = 0; i<main.length();i++){
c = main.charAt(i);
if (!(c==' ')){
w += c;
}
else {
if (w.equals(search)){
count++;
}
w = ""; // Flush old value of w
}
}
return count;
}
static int asPartOfString(String main,String search){
int count = 0;
char c; String w = ""; //Stores the word
for (int i = 0; i<main.length();i++){
c = main.charAt(i);
if (!(c==' ')){
w += c;
}
else {
if (w.length()==search.length()){
if (w.equals(search)){
count++;
}
}
w = ""; // Replace with new value, no string
}
}
return count;
}
public static void main(String[] args){
Program a = new Program();
a.input();
switch(n){
case 1: System.out.println("Total occurences: " +
asPartOfString(searchstring,search));
case 2: System.out.println("Total occurences: " +
asPartOfWord(searchstring,search));
default: System.out.println("ERROR: No valid number entered");
}
}
}
EDIT: Я буду использовать структуру петли.
Ваше желание получить ответы на многие вопросы. Если поставщики компетентны, то все они будут правильными. Потратьте время, чтобы учиться у всех из них. Некоторые из них будут простыми. Некоторые сложные. И другие будут смотреть на проблему совсем по-другому. –
Спасибо за совет, @BrettWalker.Постарайтесь впитаться в лучшем виде. –
Вы хотите перебрать строку самостоятельно или было бы хорошо использовать такое решение, как этот: http://stackoverflow.com/questions/767759/occurrences-of-substring-in-a-string – Pinguin895