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

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

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

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

Q&A

解決済

4回答

8743閲覧

javaで複数の引数

Mario_11

総合スコア95

Java

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

0グッド

0クリップ

投稿2018/04/01 11:17

編集2018/04/01 12:07

課題をしていて一番下の行のkadai2(2,out);が「method4のメソッド kadaiは指定された型に適用できません。」というエラーが出ました。
・引数
第一引数 数値型
第二引数 数値型
第三引数 boolean 型
第四引数 PrintWriter型
・処理内容
第一引数と第二引数を掛け算し,第三引数の値が true であるときにかぎって,掛け算の結果をさらに2乗します。また,この計算結果の値を画面に表示処理します。

java

1import java.io.IOException; 2import java.io.PrintWriter; 3import javax.servlet.ServletException; 4import javax.servlet.http.HttpServlet; 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpServletResponse; 7 8 9public class method4 extends HttpServlet { 10 11 void kadai (int num,int num1,boolean bl,PrintWriter pw){ 12 int kadai1 = 0; 13 int kadai2 = 0; 14 int sum = kadai1 * kadai2; 15 pw.print(sum); 16 17 boolean kadai = true; 18 if(kadai == true){ 19 int sum1 = sum * sum; 20 21 pw.print(sum1); 22 } 23 } 24 protected void processRequest(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 response.setContentType("text/html;charset=UTF-8"); 27 try (PrintWriter out = response.getWriter()) { 28 /* TODO output your page here. You may use following sample code. */ 29 kadai(2,out); 30 } 31 }

どこがおかしいのでしょうか?処理内容も自分では当たっているつもりなのですが間違いはありますでしょうか?

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

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

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

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

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

y_waiwai

2018/04/01 11:27

kadai2関数の定義がないような
swordone

2018/04/01 11:37

コードマークダウンしてください。質問編集画面でコード部分を選択し、<code>を押して投稿。
Mario_11

2018/04/01 12:07

kadai2ではなくkadaiでした!すいません! コード押しました!!
guest

回答4

0

kadai2関数のコードが示されていない(y_waiwaiさんの指摘)ので、エラーの原因を推測することは無理

void kadai (int num,int num1,boolean bl,PrintWriter pw){ int kadai1 = 0; int kadai2 = 0; int sum = kadai1 * kadai2;

『第一引数と第二引数を掛け算し』のはずが、第一、第二引数(num,num1)ではなく、0*0の計算をしている。

boolean kadai = true; if(kadai == true){

の部分は if の条件が常に成り立つので、if文を使う意味がない。
『第三引数の値が true であるときにかぎって』のはずが、第三引数(bl)が使われていない。

等、処理内容が正しいとは思えない箇所が散見される。

public class method4 extends HttpServlet {

クラスにメソッドのような名(method4)を付けているなど、わざとコードを読み難くしているようなネーミングがされているのはデバッグの妨げになっていると思われる。

この辺りをちゃんと修正して、質問のコードを読み直すことを強くお勧めします。

投稿2018/04/01 11:54

coco_bauer

総合スコア6915

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

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

Mario_11

2018/04/01 21:31

ネーミングを変えたりして、見やすくなるように努力します!! ありがとうございました!!!
guest

0

ベストアンサー

こんにちは!
この前のようにtextの表示だったら以下のようになります。
メソッドkadaiの引数が4つなのでMainでメソッドを呼び出すとき引数を4つ書きます。

Java

1 kadai(m,n,m_or_n,pw); 2

m,nがint型変数,m_or_nがBoolean,そして第4引数がprintwriterの部分です。
Booleanを使うところで何を評価するのかわからなかったので
二つの整数を入力して最初のほうが大きいときをTrueとしておきました。

※メソッドの中身について
```Java
int kadai1 = 0;
int kadai2 = 0;

boolean kadai = true;
と質問のところにありますが掛け算をするのは第1引数、第2引数の二つのint型の変数なので kadai1,kadai2は不要です。 また、boolean kadaiについても、第3引数にboolean blがあるので不要です。 (メソッドについてのサイトのリンクを貼っておきます。) [メソッドの使い方総まとめ](https://www.sejuku.net/blog/26339) 以下ソースコードとなります。この前と同様に2つの整数を入力するとtest1.textができると思います。    ```Java import java.io.*; import java.io.IOException; import java.io.PrintWriter; public class Main{ public static void main(String[] args) { PrintWriter pw = null; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); String line2 = reader.readLine(); int m = Integer.parseInt(line); int n = Integer.parseInt(line2); boolean m_or_n = (m > n); pw = new PrintWriter(new BufferedWriter(new FileWriter("test1.txt"))); kadai(m,n,m_or_n,pw); } catch (IOException e) { } pw.flush(); System.out.println("Data Writing Finished."); } public static void kadai (int num1,int num2,boolean bl,PrintWriter pw){ int product = num1 * num2; pw.println(num1 + " " + num2); pw.println("積は " + product); if(bl == true){ int product1 = product * product; pw.println("平方は " + product1); } } }

投稿2018/04/01 14:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Mario_11

2018/04/01 21:41

今回もありがとうございます!!引数の数が足りないのは理解できたのですが、outはなんの引数なのですか?それとも、使わないほうがよろしいのでしょうか?? よろしくお願いします!
glat2238

2018/04/01 22:59

outはPrintWriter型(出力に使う)でこの場合はファイルに出力する場合に使います。 PrintWriter型は主にファイルに出力するときに使うのでこの場合はBufferedReaderから作っています。 ファイルに出力したければ使う、したくていいのなら使わなくていいと思います。
glat2238

2018/04/01 23:01

使い分けられるように第四引数をnullでもいいようにしてみたらどうですか?
退会済みユーザー

退会済みユーザー

2018/04/02 00:41 編集

sei66235さんがおっしゃる通りoutはPrintWriter型です。ファイルに出力したければ 引数を4つのままで、出力しなくていいのなら 引数を3つに減らせばいいと思います。
退会済みユーザー

退会済みユーザー

2018/04/02 00:52

基本的に自分が作ったメソッドの引数がN個の時、Mainで呼び出すときも引数はN個必要です。
Mario_11

2018/04/02 11:23

少し勘違いしてました!!お二方ともわかりやすい説明なので理解できました!ありがとうございます! またすぐ違う質問を出すと思いますのでヨロシク願い致します!!!
guest

0

「引数4つくれ」って言ってるメソッドに2つしか渡さなかったら仕事できないからです。
何かの会員登録で住所と電話番号聞かれて電話番号しか書かなかったら返されますよね?

投稿2018/04/01 12:15

swordone

総合スコア20649

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

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

Mario_11

2018/04/01 21:28

頑張ります!!
swordone

2018/04/02 16:28

いや頑張るとかそういう問題じゃなくてだな…
guest

0

修正後のコードで回答しときます

void kadai (int num,int num1,boolean bl,PrintWriter pw){

kadai関数は引数を(int,int boolean,PrintWriter)の4つで定義してあります

kadai(2,out);

それを引数2つで呼び出すと、そりゃエラーになります

投稿2018/04/01 12:18

y_waiwai

総合スコア87715

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

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

Mario_11

2018/04/01 12:38

引数4つで呼び出すにはどうしたらいいですか?ヒントでもいいの浅学の人にもわかりそうなヒントください。よろしくお願いいたします。
y_waiwai

2018/04/01 12:43

引数を4つ書けばいい、ってはなしだけど、このkadai関数の4つの引数はどういう意味を持つのかを考えてみるべきかと。 呼び出すときはなんで2つで、その2つはそれぞれ4つのうちのどれに当たるの?というはなしですな。使ってない引数があるなら、てきとーに0とかfalseとか入れてりゃいいだろうけど、それやっていいのかどうかはあなたが判断すべきですね。
Mario_11

2018/04/01 13:02

てきとーでいいので引数4つの書き方を書いてくれませんでしょうか?意味がわからなくなってきました。 最後です!お願いします。
y_waiwai

2018/04/01 13:16

kadai(2,0,false,out) これがあってるかどうかはあなたが見て判断してください。
Mario_11

2018/04/01 21:27

エラーが出なくなりました。ここから改良して行きます!!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問