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

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

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

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

Q&A

解決済

2回答

1255閲覧

文字の部分一致について

sankakusan

総合スコア22

Java

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

0グッド

0クリップ

投稿2017/09/18 03:07

以下のコードでうまく動作しません
文法に誤りがあるようなのですが何がいけないのか
わかりません、どなたか御教授いただけませんでしょう。

import java.util.*;
public boolean isMatch(String S, String W) {
if(S.matches(W)) {
return true;
}
else {
return false;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
String W = sc.nextLine();
isMatch(S,W);
if (isMatch = true){
System.out.println(NG);
}
else {
System.out.println(W);
}
}
}

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

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

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

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

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

guest

回答2

0

修正しました。
Javaにおける比較演算子は "==" です。
また、Scannerインスンタスが閉じられていません。

質問者様はEclipseなどのIDEを使ってコードを書いてないのでしょうか?

IDEなしでJavaソースを記載することはオススメではありません。
IDEが気づいてくれる間違いはIDEに任せてしまった方が楽です。

Java

1import java.util.Scanner; 2 3public class test { 4 5 // isMatch呼び出しメソッド 6 public static void main(String[] args) { 7 8 // オブジェクト初期化 9 Scanner sc = new Scanner(System.in); 10 11 // 検索対象文字列を取得 12 String S = sc.nextLine(); 13 String W = sc.nextLine(); 14 15 // スキャナーを閉じる 16 sc.close(); 17 18 // 部分一致か判定(boolean型は == true などの記載は必要ない) 19 if (isPartialMatch(S, W)) { 20 System.out.println(W + " is " + "partial match of " + S + "."); 21 } else { 22 System.out.println(W + " is " + "NOT partial match of " + S + "."); 23 } 24 } 25 26 // WがSの部分一致であるかを検索(部分一致は PartialMatch です) 27 public static boolean isPartialMatch(String S, String W) { 28 if (S.indexOf(W) != -1) { 29 return true; 30 } else { 31 return false; 32 } 33 } 34}

投稿2017/09/18 03:56

編集2017/09/18 04:14
yamashita_yuich

総合スコア316

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

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

sankakusan

2017/09/18 04:26

某サイトで問題を解いている最中でしたのでコンパイラなど使わずに質問してしまいました。 またコンパイルエラーの内容も理解できていませんでした。 ご回答いただきありがとうございました。
guest

0

ベストアンサー

isMatchがクラスの外側にあることが原因です。
Javaでは、クラスに属さない、他の言語でいう関数を定義出来ません。


シンタックスエラーを消すために、次の三ステップが必要でした。

  • isMatchをMainクラスのメソッドとして定義する

前述の理由に寄るものです。

  • isMatchをstaticにする

staticメソッドであるmainから呼び出されるためです。

  • isMatchの結果を受け取る

次の部分、明らかにおかしいのがわかりますかね?
メソッドの返り値を受け取っていません。

Java

1isMatch(S,W); 2if (isMatch = true){ 3 ...

このように修正すべきかと。

Java

1boolean matchResult = isMatch(S,W); 2if (matchResult){ 3 ...

ついでに言うと、boolean型の条件式に==trueが含まれるのは冗長です。

  • NGを文字列とする

次の部分です。

Java

1System.out.println(NG);

単にNGと表示したいのなら、"NG"を引数として与えてください。


質問の際は、エラーメッセージを出来るだけ載せるようにしてください。
また、コードはバッククオート三つで括ってください。
よくわからない場合は、マークダウン記法について調べてみてください。

投稿2017/09/18 04:01

LouiS0616

総合スコア35660

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

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

sankakusan

2017/09/18 04:24

的確に間違いを指摘していただきありがとうございました。 質問に乗せたコードと言い質問内容と言いわかりづらく、聞く側として大変失礼でした。 ご回答いただいた内容を自分なりに言葉にすると まずメソットをmainクラス囲う必要がある staticにしてクラスに所属?させる必要がある メソットの返り値をboolean型の変数に格納してif 文で評価に使うということで間違いないでしょうか?
LouiS0616

2017/09/18 04:42

> まずメソットをmainクラス囲う必要がある > staticにしてクラスに所属?させる必要がある mainクラスで囲った時点で、メソッドはクラスに所属しています。 staticという概念は多少分かりづらいのですが、後々分かってくるかと。 一応簡単に説明しておくと、『インスタンスを介しないメソッド』です。 > メソットの返り値をboolean型の変数に格納してif 文で評価に使う 結果的に式の評価が一回であればいいので、今回の場合直接if文に与えるのもアリです。
LouiS0616

2017/09/18 04:43

あと、メソットではありません。メソッド(method)です。 本を買うなりして、体系的に基礎を勉強した方がいいかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問