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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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ブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3337閲覧

【コンパイルできません】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ブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿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/ツール等のバージョンなど)
より詳細な情報

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

多分、Windowsのメモ帳などでUnicodeやUTF16形式で保存したとかではないかとおもいます。
先頭の 0xfeffがUnicodeの先頭にくるものなので。

メモ帳の場合はUTF8でもBOM付きになるのでうまくいかないかもしれないため、
なにかテキストエディタを導入した方が良いかと思います。

オプションのencodingをutf-16にしてもうまくいくかもしれませんが試していないのでわかりません。

ちなみに、提示のコードで私の環境(IntelliJ IDEA)ではコンパイルはうまくいきます。

投稿2016/07/29 13:55

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/29 14:04

たいへん迅速なご教授ありがとうございます。参考にさせていただきますm(_)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問