我将如何以及在何处为此代码中的needle和haystacks变量提供用户输入

时间:2014-03-30 21:23:36

标签: java

我正在为项目做这个,方向如下: 编写一个程序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;
 }
   }

1 个答案:

答案 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();