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

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

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

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

Q&A

解決済

3回答

3985閲覧

[java]入力を複数回繰り返し、入力された数値の合計を返す

mogiruri

総合スコア37

Java

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

0グッド

0クリップ

投稿2018/08/17 02:37

メソッドを呼ばれたら、入力ダイアログを表示し、入力されたものをコンソールに表示、一部数値を足すのを3回行い、その足された数値をmainに返すという動作を行いたいのですが、頭がかき回されてしまい見失ってしまいました。

3回の足し算をメソッド内で行わなければいけないのと、それを一個づつ足していき、それを返さなきゃいけないところで詰まっています。

繰り返す回数も決まっているので while で入力と出力を繰り返したほうがいいのかと思ったのですが、毎回それを足して行くやりかたがわかりません。

最終的にはmainに返した合計値を別メソッドの引数にいれて、合計値の出力をするメソッドを呼び出します。

お助け願います。

java

1 2import javax.swing.JOptionPane; 3 4/** 5* StudentRegistration.java 6* 7* This java program processes student details to register them into courses and then 8* displays this information onto the screen. 9* 10*/ 11 12public class StudentRegistration 13{ 14 15 public static void main(String[] args) 16 { 17 18 double fee = 0, totalFees = 0; 19 20 inputStudentDetails(); 21 totalFees = //ここに帰って来たのをいれる? 22 23 outputTotalFee(totalFees); 24 25 } 26 27 public static double inputStudentDetails() 28 { 29 String stid, first, last, course; 30 double fee1, fee2, fee3, sumFees = 0; 31 32 double i = 1; 33 while(i < 3){ 34//わざわざwhileを使わなくての、以下の入力出力を繰り返してfeeの3回分の合計値を返したいです 35 stid = JOptionPane.showInputDialog(null, "Enter student ID"); 36 first = JOptionPane.showInputDialog(null, "Enter first name"); 37 last = JOptionPane.showInputDialog(null, "Enter last name"); 38 course = JOptionPane.showInputDialog(null, "Enter course"); 39 fee + i = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter fee")); 40     //おそらくここで違います。3回繰り返すのでfee1,fee2,fee3を最後に足して合計値を返そうと思ったのですがやりかたが違う気がします。 41 42 System.out.println(stid); 43 System.out.println(first); 44 System.out.println(last); 45 System.out.println(course); 46 System.out.println(fee // fee +i?); 47 } 48 49 } 50 51 public static double outputTotalFee(double totalFees) 52 { 53 System.out.println("Total Fees $" + totalFees); 54 } 55 56} 57

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

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

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

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

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

m.ts10806

2018/08/17 03:09

returnの型をvoidではなくdoubleなどして明示しているにも関わらずreturnしていないところでエラーになると思いますが、そのあたりはいかがでしょうか。
m.ts10806

2018/08/17 03:11

足しこみたい情報は「入力した数値」であってループ回数ではないですよね?これ、無限ループしてそうですけど。
mogiruri

2018/08/17 03:41

すみません return の記述もwhileの完結もまだでした。もう少し定まった状態で掲載するべきでした。
guest

回答3

0

実装方針の時点でやや複雑になってしまってる気がします。
inputStudentsDetails が1回分のfee を return するようにし、
main 中に for 文を書いて inputStudentsDetails をN回呼ぶとスッキリしますよ。

投稿2018/08/17 03:31

編集2018/08/17 03:35
set0gut1

総合スコア2413

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

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

m.ts10806

2018/08/17 03:33

自分で作った関数を使う練習(とか課題)なのかな・・・と感じました。
set0gut1

2018/08/17 03:40

練習問題感ありますね。 各メソッドの型は出題で与えられたものかなと思いました。
mogiruri

2018/08/17 03:43

関数がどう動くかの練習でした、ベーシックな記述もそうですが、値がどうやって動いて行くかを理解するために行なっています。 ご提案ありがとうございます。
guest

0

ベストアンサー

java

1import javax.swing.JOptionPane; 2 3public class Sample { 4 5 public static void main(String[] args) { 6 int fee = 0, total = 0; 7 for (int i = 1; i <= 3; i++) { 8 total += input(i); 9 } 10 output(total); 11 } 12 13 public static int input(int i) { 14 int fee = 0; 15 fee = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter fee")); 16 System.out.println("fee" + i + " = " + fee); 17 return fee; 18 } 19 20 public static void output(int total) { 21 System.out.println("Total = " + total); 22 } 23}

出力結果
fee1 = 1
fee2 = 2
fee3 = 3
Total = 6


mainからメソッドを呼び出し戻り値を合計に加算する流れのみ参考になればと思います。
そのままコピペでは使えないように変数名などは変えていますのでご自分でも考えてみてください。

投稿2018/08/17 06:44

編集2018/08/17 06:52
opyon

総合スコア1009

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

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

0

Swingを使っている意図がよく分かりませんが、ヒントだけ。

方法としては2案あります。

  1. グローバルに参照できる変数を用意しておき、その変数に足しこむ方法
  2. returnして渡していく方法

1.の例

java

1public class Main { 2 static double total = 0; 3 4 public static void main(String[] args) throws Exception { 5 add(); 6 outputTotal(); 7 } 8 9 public static void add(){ 10 11 double i = 1; 12 while(i < 3){ 13 total = total+i; 14 i++; 15 } 16 } 17 18 public static void outputTotal(){ 19 System.out.println("Total " + total); 20 } 21}

2.の例

java

1public class Main { 2 public static void main(String[] args) throws Exception { 3 double rTotal = add(); 4 outputTotal(rTotal); 5 } 6 7 public static double add(){ 8 double total = 0; 9 double i = 1; 10 while(i < 3){ 11 total = total + i; 12 i++; 13 } 14 return total; 15 } 16 17 public static void outputTotal(double pTotal){ 18 System.out.println("Total " + pTotal); 19 } 20}

どちらも結果は同じです。
最終的にどちらがいいかは全体のデータの流れや要件によります。

また、「出力」は出してしまったらそれで終わりなので意味がありません。
「足しこむ」のであればシステム内で持っている変数などに+=で足し込んでいくだけで良いです。

投稿2018/08/17 03:27

m.ts10806

総合スコア80765

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

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

mogiruri

2018/08/17 03:45

ご提案ありがとうございます。 ちょっとまとまって来たような気がします、参考にしてもう少し理解を深めていきます。
m.ts10806

2018/08/17 06:47

既に回答が出ているように処理効率なども考慮してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問