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

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

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

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

Q&A

解決済

4回答

15874閲覧

整数の2乗を計算するメソッドを作成する(int型引数を取り、結果をint型の戻り値として返し、メソッドの動作を表示できるようにプログラム)

kobito

総合スコア13

Java

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

1グッド

1クリップ

投稿2016/10/04 04:32

###前提・実現したいこと
javaでつまずいてます。
■■な機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ
returnを使うことははわかるのですが、powを使うのかとと仮に使う場合はどんな書き方になるのか教えてほしいです

エラーメッセージ

###該当のソースコード

package 課題; public class 練習 { public static int pow(int i, int j) { int ans = pow(i, j); return ans; } public static void main(String[] args) { double ans = pow(8, 2); System.out.println(); 多分問題の解釈が違うコード↓ package 課題; public class java9_1 { public static void main(String[] args) { pow(8, 2); // メソッドpowを呼び戻す } public static void pow(int i, int j) { // メソッドpowを作成 System.out.println(Math.pow(i, j)); } }

###試したこと
試して、powを使うか使わないか?となってます

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

DrqYuto👍を押しています

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

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

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

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

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

guest

回答4

0

2乗なんだから大げさにやらなくてもと思ってしまったので

java

1public class NotMath{ 2 public static int pow2(int i){ 3 return i*i; 4 } 5} 6public class UseMath{ 7 public static int pow2(int i){ 8 return Math.pow(i,2); 9 } 10} 11public class Main{ 12 public static void main(String... args){ 13 System.out.println(NotMath.pow2(5)); 14 } 15}

投稿2016/10/04 05:17

編集2016/10/04 05:19
tignear

総合スコア260

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

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

kobito

2016/10/04 05:27

解答ありがとうございます。 pow2で短縮できるんですか。 こんなコードもあるのかと感心しました。 ありがとうございました。
tignear

2016/10/04 05:50 編集

ん?メソッド名に深い意味はないです 2乗->つまりもう一回かけるだけだろ!という安易なコード
guest

0

ベストアンサー

エラーメッセージを書いていただいてませんが、 Stack overflow ですよね?

java

1public static int pow(int i, int j) { 2 int ans = pow(i, j); 3 return ans; 4}

このコードでは、 pow が無限の再帰呼び出しになってます。呼ばれた引数をそのまま自分自身に渡しているので、いつまでたっても終わりません。再帰呼び出しを書く場合は終了条件を先にチェックする必要があります。

java

1public static int pow(int i, int j) { 2 if (j == 1) { 3 return i; 4 } 5 int ans = pow(i, j - 1) * i; 6 return ans; 7}

で、いかがでしょうか。(for 文のほうが簡単だけど、あえて再帰呼び出しにしてみました)

投稿2016/10/04 04:53

mit0223

総合スコア3401

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

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

kobito

2016/10/04 05:23

解答ありがとうございます。 確認したらstank overflow出てました。 やっぱりループ状態でしたか。 初心者なのでそこで躓いてました。 ありがとうございました。
guest

0

こうですか?

Java

1import java.lang.Math; 2 3public class a { 4 public static void main(String[] args) { 5 int a = pow(2, 2); 6 System.out.println(a); 7 } 8 9 public static int pow(int i, int j) { 10 return (new Double(Math.pow((double) i, (double) j))).intValue(); 11 } 12}

投稿2016/10/04 04:43

moonphase

総合スコア6621

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

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

kobito

2016/10/04 05:20

解答ありがとうございます。 pow使うとこんなコードになるんですか。 初心者なのでint valueだなんて全く思いつかなかったです。 ありがとうございました。
swordone

2016/10/04 07:21

なんか超めんどくさい&無駄な事してますよこのコード…
Kakky7s

2016/10/08 06:20

public static int pow(int i, int j) { return (int) Math.pow( i, j); } } でいいのでは?
guest

0

こんにちは、
解決済みだし今更って感じもしますが、あえてMath.pow()を使わず基本に沿ってfor文を使うと以下のようになります。

java

1public class Main{ 2 3 public static void main(String[] args) throws IOException { 4 5 int value = pow(2,2); 6 System.out.println(value); 7 } 8 public static int pow(int a, int b){ 9 int answer = 1; 10 11 for(int i = 0; i < b; i++){ 12 answer *= a; 13 } 14 return answer; 15 } 16}

投稿2018/05/31 10:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問