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

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

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

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

Q&A

解決済

2回答

2422閲覧

メソッドの切り離しについて (Java学習中)

Takahito

総合スコア66

Java

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

0グッド

0クリップ

投稿2015/10/29 16:01

こんばんは。

今日は、メソッドについての質問です。

とても簡単なプログラミングで、数値を入力してもらってそれを左から順番に小さい方から並べるというものを作ろうとしました。

イメージ説明
これが、Mainメソッドで

イメージ説明
これが、サイズを比較するメソッドです。

私は現在、このようにメソッドをわけたのですが、Mainメソッドの

//2つの文字を入力させる
というところから
//その大小を比較する
というところはメソッドとして切り離すことはできないのでしょうか。
まだ、この規模ではメソッドの使い勝手が感じられないとは思うのですが、これからのためにその技術を学んでおきたいと思いました。

試みたところ、
System.out.printlnなどが入っているためエラーになってしまいました。
出力が入っているものを切り離すことは難しいのでしょうか?
形が多少変わってもいいので、この問題を解決する方法があったら教えていただきたいです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こういうことでしょうか?

引数や戻り値を適切に定義してやれば、プログラム外部との入出力がある処理もメソッド化できます。

java

1import java.util.Scanner; 2 3public class Main { 4 5 public static void main(String[] args) { 6 int figure1 = getFigure("1つ目の文字を入力してください"); 7 int figure2 = getFigure("2つ目の文字を入力してください"); 8 9 SizeCompare h2 = new SizeCompare(figure1, figure2); 10 } 11 12 // 文字を入力させる 13 private static int getFigure(String text) { 14 System.out.println(text); 15 16 int figure = new Scanner(System.in).nextInt(); 17 18 System.out.println(figure); 19 20 return figure; 21 } 22} 23 24// その大小を比較する 25class SizeCompare { 26 SizeCompare(int figure1, int figure2) { 27 if (figure1 < figure2) { 28 System.out.print("(" + figure1 + ", "); 29 System.out.println(figure2 + ")"); 30 } else { 31 System.out.print("(" + figure2 + ", "); 32 System.out.println(figure1 + ")"); 33 } 34 } 35}

ちなみに、

java

1SizeCompare h2 = new SizeCompare(figure1, figure2);

はメソッドではなく、コンストラクタを呼び出しています。

投稿2015/10/29 16:17

KiyoshiMotoki

総合スコア4791

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

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

Takahito

2015/10/29 16:30

ありがとうございます。 たしかに、このようにしたら見やすくて使いやすいですね。 コンストラクタでしたか、きちんと言葉を使い切れていなくてすみません。
guest

0

目的が「2つの整数を受け取って小さい方から順に表示する」ということのようなので,わざわざ別クラスに切り分ける必要もないように思います.また,現在コンストラクタに出力処理を書いていますが,出力だけが目的ならvoidメソッドで事足ります.この作業にインスタンス化するべき情報も無いので,staticメソッドにします.

java

1public class Main{ 2 public static void main(String[] args){ 3 //figure2の出力まではそのままでいい 4 sizeCompare(figure1, figure2); 5 } 6 7 public static void sizeCompare(int a, int b){ 8 //Math.minやMath.maxは2つの数値の引数を取って小さい方および大きい方を返すメソッド 9 System.out.println("(" + Math.min(a, b) + " , " + Math.max(a, b) + ")"); 10 } 11}

投稿2015/10/29 16:16

編集2015/10/29 16:18
swordone

総合スコア20649

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

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

Takahito

2015/10/29 16:31

ありがとうございます。 たしかに、そうですね。メソッドとコンストラクタが混合していたみたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問