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

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

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

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

解決済

「String内の”()”の中の文字列が、数式として書式化されているかどうかを真偽で判定するプログラム」をつくりたいです。

License
License

総合スコア2

Java

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

3回答

0評価

0クリップ

612閲覧

投稿2021/12/19 22:46

編集2021/12/20 18:04

前提・実現したいこと

12.20追記
*大かっこではありません。失礼いたしました。
*いただいた質問について、下記に順次回答をしております。みなさまご対応いただき、ありがとうございます。

ご覧いただきありがとうございます。Java初心者です。
タイトルの通り、「String内のかっこ”()”の中の文字列が、数式として書式化されているかどうかを
真偽で判定するプログラム」を完成させたいです。

質問としては、以下の3点となっております。
1「あらかじめプログラム内にデータを保存しておく方法」はなにか?

2「入力されたものにそのデータ内の数字・文字が含まれているかどうかを真偽で判定させる」にはどうすればよいか?

3”(), {}, []”の3つの”かっこ”のそれぞれの順番を、正しいものの場合のみ表示するにはどうすればよいか?

作成上での私の考えとしては、「”あらかじめプログラム内にデータを保存しておき、入力されたものにそのデータ内の数字・文字が含まれているかどうかを真偽で判定させる”とよいのでは?」と考え、作成しました。

ちなみに、入力は文字列で行い、出力結果はTrue・Falseとさせるものです。
(例)
入力 → 出力結果
"(a+b)^2"  → true
"(()))("   → false
"[(])"    → true

ご回答をよろしくお願いいたします。

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

(いずれも10行目にエラー表示となっています)

java: '.class'がありません java: 文ではありません java: ';'がありません

該当のソースコード

Java

import java.util.Scanner; public class Exercise_02 { public boolean matchBrackets(String str) { String s = " "; for (char c: str.toCharArray()) if ( s = int[], char[]) { } return true; } static public void main(String args[]) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); int[] numbers = new int[10]; numbers[0] = 0; numbers[1] = 1; numbers[2] = 2; numbers[3] = 3; numbers[4] = 4; numbers[5] = 5; numbers[6] = 6; numbers[7] = 7; numbers[8] = 8; numbers[9] = 9; char[] characters = new char[13]; characters[0] = '+' ; characters[1] = '-' ; characters[2] = '*' ; characters[3] = '/' ; characters[4] = '%' ; characters[5] = '=' ; characters[6] = '<' ; characters[7] = '>' ; characters[8] = '(' ; characters[9] = ')' ; characters[10] = '{' ; characters[11] = '}' ; characters[12] = '[' ; characters[13] = ']' ; System.out.println(matchBrackets(s)); } }

試したこと

・1の質問について、int[] numbers = new int[10];というように、配列で保存させておき、そこから処理をさせようとしました。

・2の質問については、for文を利用し、上記のintやcharの保存を判定させようとしましたが、ここでとくにつまっています。

・3の質問については、if文とASCⅡを利用して、先に"(, {, ["のASCIIに該当した際のみに処理を実行させようとしました。

補足情報(FW/ツールのバージョンなど)

環境はIntelliJ IDEAでおこなっています。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

maisumakun

2021/12/19 22:57

疑問点がいくつかあります。 ・「あらかじめプログラム内にデータを保存しておく方法」とありますが、何のデータを保存する必要がある、と考えているのでしょうか? ・受け付ける演算子はどのようなものでしょうか? ・「"[(])"    → true」となっていますが、文字もないしカッコのネストも一致していないのにtrueで大丈夫なのですか?
m.ts10806

2021/12/19 23:02

>: '.class'がありません そもそも実行方法間違えてるのでは どうやって実行したのでしょう
dodox86

2021/12/19 23:47

> 入力されたものにそのデータ内の数字・文字が含まれているかどうか この時点で判定の条件として足りな過ぎることに気が付きましょう。プログラミングの前の段階です。
kazuma-s

2021/12/20 00:29

「String内の大かっこの中の文字列が」 「"(a+b)^2  → true」 ( と ) は「大かっこ」なんですか?
License

2021/12/20 08:32

maisumakun様 質問ありがとうございます。 ・保存したいデータは、 int[] numbers = new int[10];と char[] characters = new char[13];の中にあるものすべてです。具体的には、数字と演算子、(),{},[], <, >と=です。 ・受け付ける演算子は、以上のものを考えています。 ・その例(「"[(])" → true」)に関してなのですが、わたしもこれをなぜ受け付けるのか皆目検討がつかない状況です。(課題の例をみると、これはtrueとなっていました)
License

2021/12/20 08:36

kazuma-s様 "(a+b)^2  → true”のことですね。 これは表記ミスで、「まるかっこ」(つまり、ふつうの”()”です)のことです。失礼いたしました。
License

2021/12/20 08:41

dodox86様 アドバイスありがとうございます。
License

2021/12/20 08:42

m.ts10806様 ご回答ありがとうございます。 まだ未完成の状態で、自分の考えを書いた上で、実行しました。 未熟であるため、まだミスが多い状況です。 ご助力いただけますと幸いです。
m.ts10806

2021/12/20 11:13

回答ではないです。質問への追記修正依頼です。 「どうやって実行した」か聞いてます。 コードはともかくそのコードをどうやって実行したかを答えてほしいのです。
License

2021/12/20 18:09 編集

m.ts10806様 実行の件について、これは実行ではなく、コンパイルの段階でした。
jimbe

2021/12/20 18:58 編集

>自分の考えを書いた上で、実行しました。 プログラミングの出来る人がそう言うのならば分かりますが、**まだ** 出来ない人がテキトウに書いてそう言うのは、意味がありません。 少なくとも、 java の文法さえ出来ていないコードは「絵に描いた餅」ですらありません。 if の条件の書き方はしっかりと確認してください。 前のご質問の回答に幾つかコードが出ましたが、それらをちゃんと理解されていますでしょうか。 「コピペして動いたので解決しました」…だけでしたら、回答の意味が半減です。 コードには考え方・アルゴリズムやデータ形式、基本的なライブラリの機能の使い方が表現されており、このご質問の処理に使えそうなものも含まれています。 ご自分の考えは結構ですが、先ずは多くのコードから「構成する部分々々が何をしているか理解する」「弄って動かして試す」等をされては如何でしょうか。 ※文字の集まりとして "char の配列"を使われていますが、"文字列"も文字の集まりだということをお忘れ無く…
m.ts10806

2021/12/20 20:58

>これは実行ではなく、コンパイルの段階でした。 でしたらどのようにコンパイルしているのでしょうか。 ようは「他人が現象を再現できる手順」を提示してもらいたいのです。
dodox86

2021/12/21 00:47 編集

IntelliJ IDEA同梱のJavaコンパイラでしょうかね。 OpenJDK 11でソースファイルモードで実行すると以下のようなエラーになるので。 C:\Java>java Excercise_02.java Excercise_02.java:10: エラー: '.class'がありません if ( s = int[], char[]) ^ Excercise_02.java:10: エラー: 文ではありません if ( s = int[], char[]) ^ Excercise_02.java:10: エラー: ';'がありません if ( s = int[], char[]) ^ いずれにせよ、コンパイルエラーにならないちゃんとしたコードを書いてからの話ですね。
License

2021/12/21 20:06

jimbe様 フィードバックありがとうございます。もう一度基礎を入れ直してきます。まだまだ経験と基礎的なところが足りないのを痛感しております。
License

2021/12/21 20:07

m.ts10806様、dodox86様 コンパイルのことに関して、そのとおりです。 基礎的な知識について見直してまいります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Java

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