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

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

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

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

Q&A

解決済

1回答

885閲覧

メソッドを使用して@以降の文字列を表示させたい

nn7

総合スコア8

Java

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

0グッド

0クリップ

投稿2020/04/14 03:20

前提・実現したいこと

Mainメソッドの変数mailを getDomainメソッドに対応させ、その中で@以降の文字列を抽出して戻り値としてMainメソッドに戻して表示させたい。

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

Main.java:12: error: variable word might not have been initialized return word.substring(mail.indexOf("@")); ^ 1 error

該当のソースコード

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String mail = scan.next(); String mail2 = getDomain(mail); System.out.print(mail2); } static String getDomain(String mail){ String word; return word.substring(mail.indexOf("@")); } }

試したこと

おそらく変数mail.indexOfが機能してない気がするのですが、原因がわかりません。
また、getDomain(String mail)から()の中の文字を消してもエラーが出るのですが、public static 内で指定した変数は他のメソッドにも適応されるという認識だったのですが、間違いでしょうか。
もしよろしければ合わせてご教授お願いします。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

jimbe

2020/04/14 03:31

> public static 内で指定した変数は他のメソッドにも適応されるという認識 "public static 内で指定した変数" とは, どの変数のことでしょう.
nn7

2020/04/14 03:36

String mail = scan.next();のところです
jimbe

2020/04/14 03:40

mail 変数は「他のメソッドに適応」と(不可思議な)表現をされるような使い方をしているようには見えませんが...
nn7

2020/04/14 03:52

勉強不足で申し訳ないのですが、publicで宣言した変数はほかのメソッドでも使用できると思っていたのですが、違うのでしょうか。 基本的には他のメソッド内には使用できないけど、publicのアクセス修飾子をつけたら使用できるように思っていました。
jimbe

2020/04/14 04:49

それはフィールドのことを仰っているのでしょうか. public フィールドは他のクラス(のメソッド)でも使用可能ですが, クラス内のメソッドであれば public で無くとも使用できます. (static はまた別の意味です.) ですが, mail 変数はフィールドではありません(mainメソッド内のローカル変数です)し, public も static も付いていません(ローカル変数には付けられません). main メソッドが public static ですが, それはメソッドの属性であって, その内部のローカル変数には関係ありません. 逆に言えば, mail 変数をフィールド化すれば getDomain メソッドの引数として使わなくても getDomain メソッド内で使用できますが, 単に引数を省略するためだけにフィールドを使用することは, バグになり易かったりメンテナンス性が悪かったりしますので, 行われません.
nn7

2020/04/14 09:17

ありがとうございます!非常にわかりやすいです! プログラミングを勉強し始めて一週間なのですが、メソッドとフィールドとクラスがごっちゃになっていました。もう一度復習します!
guest

回答1

0

ベストアンサー

おそらく変数mail.indexOfが機能してない気がするのですが、原因がわかりません。

エラーをきちんと読んでください。variable word might not have been initializedと理由が明記してあります。

投稿2020/04/14 03:24

maisumakun

総合スコア145208

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

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

nn7

2020/04/14 03:56

wordを使う必要ありませんでした。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問