前提・実現したいこと
今、配列とメゾットを勉強しています。
ユーザーが入力した数字を逆から掛けていくシステムを作りたいです。
7 -5 4 -3 2 と入力したら
アウトプットが
840 120 -24 -6 2
となるようにしたいのですが、逆からかけていく仕組みもその前の工程もわかりません。
該当のソースコード
Java
1import java.util.Scanner; 2 3public class Task1_5 { 4 5 public static int main() { 6 7 //1. ask for how many numbers 8 9 Scanner in = new Scanner(System.in); 10 System.out.println("How many numbers?"); 11 int i = input.nextInt(); 12 int[] array = new int[i]; 13 return 0; 14 } 15 16 //2.input those numbers into arrays 17 18 public static int addValues(int[] arr) { 19 Scanner in = new Scanner(System.in); 20 for (int i = 0; i < arr.length; i++) { 21 System.out.println("enter number " + (i + 1)); 22 arr[i] = in.nextInt(); 23 } 24 return 0; 25 } 26 //3. multiply them 27 28 public static void multiplyArray(int[] nums, int[] multiply) { 29 int total; 30 for (int i = 0; i < nums.length; i++) { 31 total = 1; 32 for (int j = nums.length; j > i; j--) { 33 total *= nums[(j - 1)]; 34 } 35 multiply[i] = total; 36 37 } 38 } 39 //4.print them out 40 41 public static void main(String[] args) { 42 int result = 0; 43 44 System.out.println("Here is the result: "); 45 int [] multiplyArray = new int [result]; 46 int [] valuesArray = new int [result]; 47 48 addValues(valuesArray); 49 50 multiplyArray(valuesArray, multiplyArray); 51 System.out.println(Arrays.toString(multiplyArray)); 52 53 } 54} 55 56
エラーメッセージ
error: cannot find symbol int numVals = findVal(); symbol: method findVal() location: class Multiply 1 error
まず、前のご質問を終らせてから進んだ方がよくないですか。
https://teratail.com/questions/326614
> 逆からかけていく仕組みもその前の工程もわかりません。
Javaでのプログラミングは置いておいて、まずご自身の頭の中でどう計算していくか、その手順を細かく分解できるかどうかだと思いますがいかがですか。頭の中でできないことはプログラミングで再現できません。
前からができるなら逆からもできます。
いま、どこまで出来てますか?
実ロジックは乗算と表示だけなので、ほぼアルゴリズムの問題ですね。
dodox86さんの言うとおりプログラムは一旦置いておいて、
結果を導くための手順を考えるのが良いです。
アドバイスありがとうございます。
計算方法自分だけでは考えつきませんでした。
今のコードはここまでできています。
これから
1 数字をきく
2 配列に変換する
3 全数字をかける
4 先頭の数字から割る
5 結果をプリント
にしたいのですがメゾッドを使いこなせません。
> 今のコードはここまでできています。
...
> にしたいのですがメゾッドを使いこなせません。
ん? コードはできている、ということではないのですか?ひとつのメソッドに切り出したいけど、できないということなのでしょうか。
※尚、メゾッドではなく、一般的にはカタカナ読みで、メソッド(method)と呼びます。
メソッドに切り出すのが難しいのであれば、無理してそうしなくても良いのではと思います。
ご提示のコード中、addValues()やmultiplyArray()などの名前で作らなくてはいけない訳ではないのですよね。「それらの名前のメソッドで作らなければいけない」としたら、初心の方にとってはそれはそれでひとつの課題だと思います。
大学の課題なのですが、条件として
配列の作成と変更
配列をメソッドのパラメータとして渡す
多次元配列のトラバース
配列の値を使って集計計算をする
が挙げられていました。
名前に指定はないですが、メソッドを理解したいです。
パワーポイントが配布されるのみのクラスなので、ほとんど自分で調べて課題を提出しています。先週から教授に質問のメールを送っているのですが、返信がこなく困っていたためこのサイトで聞きました。
コードを書いている途中でどうやっていいか分からなくなっています。。結果の表示がうまくいかないため、自分の計算がどうなっているかも分からないです。
(必ずしも本質問に回答する訳ではないのですが)いち回答者の立場から書かせてもらうと、本質問としては「数字を後ろからかけ算する方法」が主題のはずなので、あらゆる条件のクリアを回答中に求めてしまうと回答はしづらくなり、結果、回答者も離れていきがちになります。答えられない訳ではなく、回答後に質問者がそれをすぐ理解できるとは限らない為、質疑応答が長引きがちになる為です。現に、今現在いただいた回答では閉じられないのですよね。全てを最初から片付けるのではなく、ひとつひとつクリアしていったらいかがでしょうか。
> パワーポイントが配布されるのみのクラス
コロナ禍の事情なのでしょうが、学生さんらにとっては気の毒であるとは思います。
回答1件
あなたの回答
tips
プレビュー