在数组中查找字母

时间:2013-10-11 22:53:36

标签: java arrays algorithm search linear

我正在尝试创建一个程序,它允许我输入10个字符并将它们存储在一个数组中。 只有单个字符就足够了,例如(d,s,a,e,h,j,e,)......然后让我使用线性搜索算法查找其中一个字符并给出数组中的位置。

我试过编程但我只能用整数来做。 到目前为止,这是我的代码。

我不知道如何将其更改为字母/字符?

public static void main(String args[])

int c, n, search, array[];

Scanner in = new Scanner(System.in);
System.out.println("Enter number of elements");
n = in.nextInt(); 
array = new int[n];

System.out.println("Enter " + n + " Letters");

for (c = 0; c < n; c++)
  array[c] = in.nextInt();

System.out.println("What letter do you want to find?");
search = in.nextInt();

for (c = 0; c < n; c++)
{
  if (array[c] == search)     /* Searching element is present */
  {
     System.out.println(search + " is present at location " + (c + 1) + ".");
      break;
  }
if (c == n)  /* Searching element is absent */
  System.out.println(search + " Letter is not found.");

3 个答案:

答案 0 :(得分:4)

  

我尝试编程但我只能用整数

来编程

不,如果您使用in.next().charAt(0)而不是in.nextInt()Scanner来获取第一个Character表单String,则可以执行此操作。

  

我不知道如何将其更改为字母/字符?

这里你不需要更改它,或者某些regexsplit,方法in.next()从输入中获取String(最终用途),然后获取charAt(0)第一个。

现在,我在您的代码中更改了上面提到的工作:

  1. searcharray[]更改为char数据类型。
  2. array[]的声明更改为array = new char[n]
  3. searcharray的输入更改为in.next().charAt(0)
  4. 试试这个:

     public static void main(String args[]) {
    
        int n,c;
        char search,array[];
    
        Scanner in = new Scanner(System.in);
        System.out.println("Enter number of elements");
         n = in.nextInt();
        array = new char[n];
    
        System.out.println("Enter " + n + " Letters");
    
        for ( c = 0; c < n; c++) {
            array[c] = in.next().charAt(0);
        }
    
        System.out.println("What letter do you want to find?");
        search = in.next().charAt(0);
    
        for ( c = 0; c < n; c++) {
            if (array[c] == search) /* Searching element is present */ {
                System.out.println(search + " is present at location " + (c + 1) + ".");
                break;
            }
            if (c == n) /* Searching element is absent */ {
                System.out.println(search + " Letter is not found.");
            }
        }
    }
    

答案 1 :(得分:0)

问题在于您的第array[c] = in.nextInt();行。 nextInt() methodScanner class可以读取整数,只读取整数

您可以尝试使用array[c] = in.nextLine().charAt(0);,它将从控制台获取任何输入,将其临时存储为String,获取该String的第一个字符,然后存储该字符串。您需要对第二个in.nextInt()执行相同操作。

顺便说一句,将char存储在int中通常是不好的做法,即使它是有效的Java。例如,我会将csearch更改为char,并将array更改为char[]

答案 2 :(得分:0)

这是一种更简单的方法,使用Java的内置功能:

final Scanner in = new Scanner(System.in);
System.out.println("Please enter a series of characters:");
final String input = in.next();

System.out.println("What do you want to find?");
final String search = in.next();

int pos = input.indexOf(search);
if (pos < 0) {
  System.out.println("No match.");
} else {
  while (pos >= 0) {
    System.out.println("Found at location: " + pos);
    pos = input.indexOf(search, pos + 1);
  }
}

的差异:

  • 只扫描实际字符,因为输入的长度定义了用户实际想要输入的字符数。

  • indexOf()方法与您的函数大致相同,但它更快更容易(因为您实际上并不需要对其进行编码)。

  • 这允许用户扫描多个char。如果那不是我想要的,我将由你来决定如何改变它。 ;)