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

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

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

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

Q&A

解決済

1回答

549閲覧

java言語で問題をといているのですが、配列を変数で指定しているが、エラーが起こり先に進めません。

sawakuun

総合スコア42

Java

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

0グッド

0クリップ

投稿2023/05/29 02:52

配列番号を変数で指定しエラーが起こっている

java言語の問題を解いていて、配列名(変数) - 配列名(変数)を実行して問題を解こうとしているのですがこのやり方は、出来ないのでしょうか。またおかしなところがありましたら、ご指摘いただきご教授していただきたいです。

問題

最初に各人はそれぞれボールをいくつか所持しています。
その後、適当な順番でボールをパスしていくのですが、この際にパスする相手とボールの個数を宣言します。
宣言した個数以上のボールを持っている場合は宣言した個数のボールを、そうでない場合は持っているボールすべてを、選んだ相手にパスします。
なお、ボールを所持できる数に上限はありません。

このパス回しの情報が順番に与えられるので、最終的に各人が持っているボールの個数を求めてください。

入力値
3 (人数)
10 (1のひとが初めに持っている数)
5 (2のひとが初めに持っている数)
8 (3のひとが初めに持っている数)
3 (パスの回数)
1 3 5 (1の人が3の人に5個ボールを渡す)
3 2 3 (3の人が2人に3個ボールを渡す)
2 1 10 (2の人が、1の人に10個ボールを渡す)

期待値
13 (1の人の最終的にのこった数)
0 (2の人の最終的にのこった数)
10 (3の人の最終的にのこった数)

該当のソースコード

java

1import java.util.*; 2public class Main { 3 public static void main(String[] args) { 4 // 自分の得意な言語で 5 // Let's チャレンジ!! 6 Scanner sc = new Scanner(System.in); 7 int human = sc.nextInt(); //人数 8 for(int i = 0; i < human; i++){ 9 int[] temoti = new int[sc.nextInt()];// 配列~人数(human)の中に値を入れる。 10 } 11 12 int pass = sc.nextInt(); //パス回しの回数 13 for(int i = 0; i < pass; i++){ 14 int giver = sc.nextInt()-1; //passを渡す人 15 int keeper = sc.nextInt()-1;// passを受け取る人 16 int give_num =sc.nextInt();//passするボールの個数 17 int temoti([giver]) = temoti([giver]) - give_num; 18 int temoti[keeper] = temoti[keeper] + give_num; 19 20 if (temoti[giver]< give_num){ 21 int temoti[keeper] = temoti[keeper] + temoti[giver]; 22 int temoti[giver] = 0; 23 } 24 } 25 26 for (int i = 0; i < temoti.length; i++){ 27 System.out.println(temoti[i]); 28 } 29 30 } 31}

何か変なところがあればそこも教えてください。お願いいたします。

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

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

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

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

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

maisumakun

2023/05/29 02:56

> エラーが起こり先に進めません。 エラーメッセージを明示してください。
episteme

2023/05/29 03:51

> 何か変なところがあればそこも教えてください。 変なところだらけ↓ int[] temoti = new int[sc.nextInt()];// 配列~人数(human)の中に値を入れる。 int temoti([giver]) = temoti([giver]) - give_num; int temoti[keeper] = temoti[keeper] + give_num; int temoti[keeper] = temoti[keeper] + temoti[giver]; int temoti[giver] = 0;
sawakuun

2023/05/29 04:12

ご回答ありがとうございます。 re:episteme さん、maisumakunさん ご指摘いただいたところがエラーになってしまっています。 int temoti[keeper] = temoti[keeper] + give_num; int temoti[keeper] = temoti[keeper] + temoti[giver]; int temoti[giver] = 0; こちらの部分です。
episteme

2023/05/29 04:15

各行の先頭にある int は何のため?
hoshi-takanori

2023/05/29 04:30

Paiza の問題 (C098) っぽいけど、大丈夫でしょうか?
guest

回答1

0

ベストアンサー

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 int human = sc.nextInt(); //人数 7 8 int[] temoti = new int[human]; 9 for ( int i = 0; i < human; i++ ) { 10 temoti[i] = sc.nextInt(); // 配列~人数(human)の中に値を入れる。 11 } 12 13 int pass = sc.nextInt(); //パス回しの回数 14 for ( int i = 0; i < pass; i++ ) { 15 int giver = sc.nextInt()-1; // passを渡す人 16 int keeper = sc.nextInt()-1; // passを受け取る人 17 int give_num = sc.nextInt(); // passするボールの個数 18 if ( temoti[giver] < give_num ) { // 手持ちの個数を超えてpassできない 19 give_num = temoti[giver]; 20 } 21 temoti[giver] -= give_num; 22 temoti[keeper] += give_num; 23 } 24 25 for (int i = 0; i < temoti.length; i++){ 26 System.out.println(temoti[i]); 27 } 28 } 29}

投稿2023/05/29 03:48

編集2023/05/29 04:02
episteme

総合スコア16614

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

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

sawakuun

2023/05/29 04:14

ありがとうございます。 ご回答いただきましたものを読解し再度チャレンジいたします!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問