【发布时间】:2015-06-06 15:21:59
【问题描述】:
我对 Java 很陌生,作为初学者,我被提议在家里尝试一下。
编写一个程序,该程序将找出较大字符串中较小字符串的出现次数作为其一部分以及单个单词。 例如,
较大的字符串 =“我在阿姆斯特丹”,较小的字符串 =“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");
}
}
}
编辑:我将使用循环结构。
【问题讨论】:
-
这个问题你会得到很多答案。如果提供者有能力,那么他们都是正确的。花时间向他们学习。有些会很简单。有些复杂。其他人会以非常不同的方式看待这个问题。
-
感谢@BrettWalker 的建议。会尽力吸收最好的。
-
你想自己循环字符串还是可以使用这样的解决方案:stackoverflow.com/questions/767759/…
-
我会使用循环。谢谢。