質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java ME

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

【コンパイルできません】javaでBM法を用いた文字列探索

削除済ユーザー
削除済ユーザー

総合スコア0

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java ME

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0評価

0クリップ

2529閲覧

投稿2016/07/29 13:36

###前提・実現したいこと

javaでBM法を用いた文字列探索を実現したいです。

###発生している問題・エラーメッセージ

以下のソースコードをどうしてもコンパイルできず、次のエラーが出ます。自分では調べました。

どこを直せばよいかご教授よろしくお願いいたします。

javac -encoding utf-8 BM.java

BM.java:1: エラー: '\ufeff'は不正な文字です
?import java.util.Scanner;
^
BM.java:1: エラー: class、interfaceまたはenumがありません
?import java.util.Scanner;

###該当のソースコード
import java.util.Scanner;

public class BM{

static int bmMatch(String txt, String pat) {
int pt;
int pp;
int txt_len = txt.length();
int pat_len = pat.length();
int[] skip = new int[Character.MAX_VALUE + 1];
int count = 0;
int k = -1;

for \(pt = 0; pt <= Character\.MAX_VALUE; pt\+\+\) skip\[pt\] = pat_len; for \(pt = 0; pt < pat_len - 1; pt\+\+\) skip\[pat\.charAt\(pt\)\] = pat_len - pt - 1; while \(pt < txt_len\) { pp = pat_len - 1; if \(k == pt - pp\); else { k = pt - pp; } for \(int i = 0; i < txt\.length\(\); i\+\+\); for \(int i = 0; i < pt \* 2 \+ 4; i\+\+\); for \(int i = 0; i < \(pt-pp\) \* 2 \+ 4; i\+\+\); for \(int i = 0; i < pat\.length\(\); i\+\+\); count\+\+; while \(txt\.charAt\(pt\) == pat\.charAt\(pp\)\) { if \(pp == 0\) return pt; pp--; pt--; if \(k == pt - pp\); else { k = pt - pp; } for \(int i = 0; i < txt\.length\(\); i\+\+\); for \(int i = 0; i < pt \* 2 \+ 4; i\+\+\); for \(int i = 0; i < \(pt-pp\) \* 2 \+ 4; i\+\+\); for \(int i = 0; i < pat\.length\(\); i\+\+\); count\+\+; } pt \+= skip\[txt\.charAt\(pt\)\]; } return -1;

}

public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);

System\.out\.print\("テキスト:"\); String s1 = stdIn\.next\(\); System\.out\.print\("パターン:"\); String s2 = stdIn\.next\(\); int idx = bmMatch\(s1, s2\); if \(idx == -1\); else { int len = 0; for \(int i = 0; i < idx; i\+\+\) len \+= s1\.substring\(i, i \+ 1\)\.getBytes\(\)\.length; len \+= s2\.length\(\); System\.out\.println\(\(idx \+ 1\) \+ "文字目にマッチします。"\); System\.out\.println\("テキスト:" \+ s1\); System\.out\.printf\(String\.format\("パターン:%%%ds\\n", len\), s2\); }

}
}

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java ME

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。