1

10文字を入力して配列に格納できるプログラムを作成しようとしています。たとえば、(d、s、a、e、h、j、e、) のように、1 文字だけで十分です。次に、線形検索アルゴリズムを使用して文字の 1 つを探し、配列内の位置を示します。

プログラムしようとしましたが、整数でしかできません。これまでの私のコードは次のとおりです。

文字/文字に変更する方法がわかりませんか?

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.");
4

3 に答える 3

4

プログラムしようとしましたが、整数でしかできません

いいえ、最初のフォームを取るクラスからでin.next().charAt(0)はなく、使用すればできます。in.nextInt()ScannerCharacterString

文字/文字に変更する方法がわかりませんか?

ここでは、変更する必要はありませんregexsplitメソッドin.next()は入力から文字列を取得し (最終用途) charAt(0)、最初のものを取得します。

さて、あなたが上で述べたように動作するようにあなたのコードで私が変更したこと:

  1. searcharray[]charデータ型に変更します。
  2. の宣言をarray[]に変更array = new char[n]
  3. との入力を に変更searcharrayますin.next().charAt(0)

これを試して:

 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.");
        }
    }
}
于 2013-10-11T22:59:12.510 に答える
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() メソッドは関数とほぼ同じことを行いますが、より高速で簡単です (実際にコーディングする必要がないため)。

  • これにより、ユーザーは複数の文字をスキャンできます。それが望ましくない場合は、それを変更する方法を理解するのはあなたに任せます. ;)

于 2013-10-11T23:09:45.880 に答える