我正在为项目做这个,方向如下: 编写一个程序StringSearch,它接受两个字符串作为程序参数,打印出来 第二个字符串中第一个字符串的出现次数,并打印出该位置 第一个出现在第二个字符串中的第一个字符串。 我仍然是一个新手,并从教科书中借用了这些代码的块,并且还不了解如何将它集成到我编写的代码中。我知道我并不是在问一个特定的问题,我只是不明白如何让代码完成任务。
package StringSearch;
/**
*
* @author devan
*/
import java.util.Scanner;
public class SearchString {
public static void main(String[] args) {
int nargs = args.length;
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter value for needle:");
String needle;
needle = scanner.nextLine();
System.out.println("Please enter value for haystack:");
String haystack = scanner.nextLine();
if(nargs < 2) {
System.out.println("Insufficient arguments provided");
System.out.println("Usage is: java SearchString needle haystack");
}
else {
System.out.println(searchString(args[0].toCharArray(),args[1].toCharArray()));
System.out.println(getFrequency(args[0].toCharArray(),args[1].toCharArray()));
}
}
public static int searchString(char[] needle, char[] haystack) {
int nsize = needle.length;
int hsize = haystack.length;
for(int i = 0; i < hsize; i++) {
int j;
for(j = 0; j < nsize; j++) {
if(i+j >= hsize) {
break;
}
if(needle[j] != haystack[i+j]) {
break;
}
}
if(j == nsize) {
return i+1;
}
}
return -1;
}
public static int getFrequency(char[] needle, char[] haystack) {
int freq = 0;
int nsize = needle.length;
int hsize = haystack.length;
for(int i = 0; i < hsize; i++) {
int j;
for(j = 0; j < nsize; j++) {
if(i+j >= hsize) {
break;
}
if(needle[j] != haystack[i+j]) {
break;
}
}
if(j == nsize) {
freq++;
}
}
if(freq == 0)
return -1;
else
return freq;
}
}
答案 0 :(得分:1)
命令行参数提示的典型格式是
错误消息
用法:正确使用
因此代码看起来像
if(nargs < 2) {
System.out.println("Insufficient arguments provided");
System.out.println("Usage is: java SearchString needle haystack");
} ...
如果您希望用户以交互方式输入数据,请使用扫描仪
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter value for needle:");
String needle = scanner.nextLine();
System.out.println("Please enter value for haystack:");
String haystack = scanner.nextLine();