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

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

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

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

Q&A

解決済

4回答

1642閲覧

変数の定義とメソッドを使った活用法について Java学習中

Takahito

総合スコア66

Java

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

0グッド

0クリップ

投稿2015/09/14 15:45

参考書にて、メソッドという概念について学びました。

そこで、参考書には載っていないのですが name という変数を作成し、そこに名前を入力して、「その名前 + さん、こんにちは」という出力を動作するプログラムを作成しようとしたところ、「nameは定義されていない」というエラーが出てしまいました。このような場合は、どのようにしたら正常に動作するのでしょうか?

初歩のところですが、よろしくお願いいたします。

public class Main {

public static void main (String[] args) { System.out.println("名前を入力してください"); String name = new java.util.Scanner(System.in).nextLine(); System.out.println("メソッドを呼び出します"); hello(); System.out.println("メソッドの呼び出しが終わりました"); } public static void hello() { System.out.println(name + "さん、こんにちは"); }

}

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

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

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

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

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

guest

回答4

0

変数は宣言した同一{}の中でかつ宣言より後述のもののみ使用可能です。

例)

{ String hoge = "hoge"; { String hogehoge = "hogehoge"; System.out.print.ln(hoge); System.out.print.ln(hogehoge); System.out.print.ln(hogehogehoge); // ←ビルドエラー } String hogehogehoge = "hogehogehoge"; System.out.print.ln(hoge); System.out.print.ln(hogehoge); // ←ビルドエラー }

実は嘘ですが、参考書を読み進めていくうちに「変数のスコープ」で学習しますので、
今は、これで覚えてしまって問題無いです。

投稿2015/09/14 16:08

TetsujiMiwa

総合スコア1124

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

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

Takahito

2015/09/16 11:52

ありがとうございます。実は嘘なのですか。。。。とりあえず、今はこれで納得して学習を進めます。
guest

0

ベストアンサー

mainメソッドで"name"変数を定義し、入力していると思います。
そしてその結果をhelloメソッドで出力しています。
この時、"name"変数の定義方法はmainメソッド内では利用できますがhelloメソッド内では利用(参照)できません。
そのため、helloメソッドへ"name"変数の中身を渡して出力する方法もあります。

Java

1public static void hello(String name) { 2 System.out.println(name + "さん、こんにちは"); 3}

呼び出し側のmainメソッドでは、下記のようになります。

Java

1hello(name);

投稿2015/09/14 15:51

CharmSystems

総合スコア241

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

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

Takahito

2015/09/14 16:03

とてもわかりやすい回答ありがとうございます。 「mainメソッドで"name"変数を定義し、入力していると思います。」 という言い方からすると、 helloメソッドで変数を定義し、入力をさせるというこも可能ということなのでしょうか? 少し考えてみて、記述法の見当がつかなかったので、その場合の記述法をお教えいただけないでしょうか?
CharmSystems

2015/09/14 16:20

helloメソッド内でname変数を定義し、ユーザ入力にすればコードをほとんど書き換えずにできます。 public static void main (String[] args) { System.out.println("名前を入力してください"); System.out.println("メソッドを呼び出します"); hello(); System.out.println("メソッドの呼び出しが終わりました"); } public static void hello() { // ↓ここを移動しただけ String name = new java.util.Scanner(System.in).nextLine(); System.out.println(name + "さん、こんにちは"); }
Takahito

2015/09/16 11:53

ありがとうございます。このようにすれば良いのですね。ベストアンサーとさせていただきます。
guest

0

今"name"という変数はmainメソッドの中だけで使えるローカル変数なので,他のメソッドからは見ることができません.
これを解決するには,helloメソッドで使うべきnameを渡す必要があります.

java

1 public static void hello(String name) { 2 System.out.println(name + "さん、こんにちは"); 3 }

こうして,mainメソッドから呼び出す際に

java

1 hello(name);

とすれば,望む結果になります.

投稿2015/09/14 15:51

swordone

総合スコア20649

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

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

Takahito

2015/09/14 15:59

ローカル変数というもので自分は作成していて、それを渡さないといけないのですね。 お答えいただきありがとうございます。
guest

0

それをやるのでしたら、
hello(name);

public stativ void hello(String name){
と書くのが一番簡単かと思います

投稿2015/09/14 15:50

kpiyohiko

総合スコア658

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

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

Takahito

2015/09/14 15:56

実行してみたところ、動作しました。 ありがとうございます。 また、いくつも使う場合は 例えば、 hello(name, name2); と public static void hello(String name, String name2){ のように、" , "と" 変数名 "を追加していけばよいのでしょうか? 試みてみた、複数の場合のものです。 public class Main { public static void main (String[] args) { System.out.println("名前を入力してください"); String name = new java.util.Scanner(System.in).nextLine(); String name2 = new java.util.Scanner(System.in).nextLine(); System.out.println("メソッドを呼び出します"); hello(name, name2); System.out.println("メソッドの呼び出しが終わりました"); } public static void hello(String name, String name2) { System.out.println(name + "さん、こんにちは"); System.out.println(name2 + "さん、こんばんは"); } }
kpiyohiko

2015/09/14 16:09

はい、複数書く形で問題ありません。 ただ、もうじき出てくる配列というものを使うともっと楽になります( ^ω^ )
Takahito

2015/09/16 11:51

ありがとうございます。配列というものは今日学習する範囲のページにて掲載されているようです。楽しみにしながら学習します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問