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

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

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

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

Q&A

解決済

6回答

2681閲覧

配列Aの各値を配列Bに逆の順番で代入したいのですが

koo315315

総合スコア2

Java

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

0グッド

2クリップ

投稿2020/05/16 02:21

前提・実現したいこと

独学でjavaの勉強をしてますが、問題集で表題の問題が出ました。
いろいろな単語で検索をしていますが該当するページにたどり着かないので
思い切って質問します。

発生している問題・エラーメッセージ

Exception in thread "main" java.lang.NullPointerException at okada.Main.main(Main.java:15)

該当のソースコード

java

1public class Main { 2 3 public static void main(String[] args) { 4 5 int[] numA = {1,2,3,4,5}; 6 7 int[] numB = new int[5]; 8 9 String[] intA = null; 10 11 for(int i = 0; i < numA.length ; i++) { 12 13 System.out.print("intA[" + i + "] = " + intA[intA.length -1]); 14 15 } 16 17 18 19 20 } 21 } 22

試したこと

検索して逆順で出たコードをいろいろ書きましたが問題の答えになるものがないので
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

Zuishin

2020/05/16 02:24

なぜ検索をしなくてはいけませんか? 配列がどういうものかわかっていればその知識だけでできます。
koo315315

2020/05/16 02:29

まだ初心者で最近配列を勉強する事になりまして、正直完全に理解はしてません。 理解するための問題だと思いますので、質問させていただきました。
Zuishin

2020/05/16 02:30

いいえ、理解するための問題ではなく、理解度を確かめるための問題です。教わった範囲が頭に入っているかどうかをこれで確かめ、できなければ復習してください。それで必ずできます。
maisumakun

2020/05/16 02:31

> 理解するための問題だと思いますので、質問させていただきました。 このコードでは、それ以前の問題かと思います。
koo315315

2020/05/16 02:34

問題集に沿って学習してますが、配列を逆順にする方法を記載されておらず困っているので質問してます。 教科書に手順が載っていれば分かりますけど、載ってないので質問してます。
ozwk

2020/05/16 02:36

逆順じゃなくて順番通りだったらできます?
koo315315

2020/05/16 02:38

配列に代入した値を順番に表示はできます。
maisumakun

2020/05/16 02:39

> 配列を逆順にする方法を記載されておらず困っているので質問してます。 自分で方法を考える、という選択肢はないのですか?
maisumakun

2020/05/16 02:43

それに気づけただけでも収穫かと思います。
ozwk

2020/05/16 09:08

こんなところでくだらないやりとりしている時間がもったいないので 無視して勉強に集中したほうが…
Zuishin

2020/05/16 09:16

頑張ってください。
m.ts10806

2020/05/16 10:50

1+1=○ を答えるのではなく ○+X=2 をどうやって成り立たせるのかを考えるのがプログラミングです。考えた上で、どのパターンが現在やろうとしていることに最適かを選択する仕事です。 絶対の答えがないので答えを作っていくんですよ。
guest

回答6

0

なにがわからんのかなぁ...

0番目を4番目へ
1番目を3番目へ
...
i番目を4-i番目へ
...
4番目を0番目へ

コピーするだけなんだが。

投稿2020/05/16 10:03

episteme

総合スコア16614

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

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

koo315315

2020/05/16 10:05

ご回答ありがとうございます。 それはわかってるんです。 それをfor文で解決したいんです。 すんません、言葉足らずで。
episteme

2020/05/16 10:06

いやだから、その i をfor-loop使って 0から4まで回せばいいんでしょ?
koo315315

2020/05/16 10:39

loopですか?学んでませんでした。 教科書読み直します。 お手数おかけしました。
episteme

2020/05/16 11:44 編集

...勘違いさせたか? for-loopてーのは for を使った繰り返し のこと。 えーと、「そのものヅバリ」を出したほうがいいですか? お望みとあらばそうしますよ?
guest

0

ベストアンサー

画像だけで素直に代入していく例と実行結果を示します。
このコードが理解できたら、for をつかってかきなおしてみてください

イメージ説明

追記

java for 配列 逆順
で google 羂索してみた結果から引用します。

  • Javaで配列を反転する方法

https://www.codeflow.site/ja/article/java-invert-array

  • 配列値の反転

https://talavax.com/arrayreverse.html

投稿2020/05/17 04:54

編集2020/05/17 05:27
katoy

総合スコア22324

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

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

swordone

2020/05/17 05:02

epistemeさんがすでに指摘して、質問者が「それをfor文で書く方法が知りたい」って話のようなんですよねぇ…
momon-ga

2020/05/17 05:25

numBのインデックスとnumAのインデックスを足すと、合計が一緒になるっ!!! epistemeさんも、> i番目を4-i番目へ って、書いてるんですけどね・・・
koo315315

2020/05/17 07:02

コードまで書いていただいてありがとうございます!
koo315315

2020/05/17 07:17

nullやlengthは参考書もそこの段階までやってなくて、もう少ししたら出てくるようで、何をする機能なのか調べて勉強します。
katoy

2020/05/17 08:06

現時点で 低評価 (2) です。理由が知りたいです。
episteme

2020/05/17 09:34

僕も知りたいです、低評価の理由。 # が、それよりもベストアンサーの理由が知りたいですね。
koo315315

2020/05/18 07:44

高評価になってますが、、、 今回の投稿が初めてでしたのでもしかしたら間違ったボタンを押しているのかもです。
guest

0

エラーメッセージのとおりです。

String[] intA = null;としてそれ以降もintAに代入していない以上、添字で参照しようとしてもエラーになります。

投稿2020/05/16 02:30

maisumakun

総合スコア145184

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

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

0

簡単な考え方として
かなりざっくりだけどw

Aの配列の数を数える

Forでループ
B配列[数えた数]=A配列[i]
数えた数=数えた数-1

1つ
数えた数のところに罠があるので気づいてみてくださいね

投稿2020/05/16 03:08

AMK

総合スコア765

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

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

koo315315

2020/05/16 03:11

ありがとうございます。 やってみます!
koo315315

2020/05/16 06:52

罠の内容がわかりません。 罠の手前まで行けたのですが、やはり罠にかかってしまいました。
AMK

2020/05/16 06:57 編集

罠の答えは、配列の順番の指定の方法です。 配列の指定は0~4 配列の数は5 この違いをどうしたら解消できますか?
koo315315

2020/05/16 07:37

private static int i; public static void main(String[] args) { int[] numA = {1,2,3,4,5}; int[] numB = new int[5]; for(int i = 0; i < 5; i++); numB[5] = numA[i]; ここまで行けました。 最後の 数えた数 = 数えた数-1 のコードの書き方がわかりません。 頭の中がパルプンテです。 罠の答えがわかりましたけど、どのように表現するのかが分かりません。
guest

0

エラーの原因はintAがnullなのに配列要素に参照しようとしているからです。が、

  • まず、配列の操作以前に、変数の扱い、変数への代入など基本的な動作を理解していますか?
  • 配列の概念、配列の各要素の参照方法を理解していますか?
  • 配列の中身を逆順で代入する処理を日本語で順を追って書けますか?

文面とソースコードを見る限りどれもできていないように見受けられます。

悪いことは言わないので、学習を最初からやり直してください。
学習書は章立てになっているはずなので、その章を何度も復習し、理解度100%になってから次へ進んでください。
現在使っている問題集が「問題」しか載っていないのであれば、今はそれを使わずに置いておいて、ちゃんと解説が載っている入門書を買ってください。
もしくはpaizaなどのオンライン学習サイトを利用してみてください。

投稿2020/05/16 02:39

hope_mucci

総合スコア4447

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

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

koo315315

2020/05/16 02:42

ありがとうございます。
koo315315

2020/05/16 03:31

すっきりわかるjava入門を見て問題集をやってるのですが、何かおすすめの本ご存じでしょうか?
hope_mucci

2020/05/16 04:19

入門書については疎いので、おすすめとかは提示できません。あしからず。 一般的には、種類の違う入門書を何冊か読んでみて、一番自分にしっくりきそうな本を選ぶことです。 数冊購入するのが理想ですが、お金がないなら図書館などで借りてみても良いかと思います。
guest

0

forでやる方法も、いくつかある。

1.for は、現状通りで、参照時に配列長とループ変数の演算で、逆順を作成。
2.for の最初の宣言部に、int cnt = 0, int rCnt = 配列長 -1、最後の部分にインクリメントとデクリメント。

検索でソースを見つけたら、理解するために、行毎に、自分の言葉でコメントを書いてみてください。


// 代入元の変数宣言とデータ設定
int[] numA = {1,2,3,4,5};
// 代入先の変数宣言と領域確保
int[] numB = new int[5];
// ??の変数宣言、領域確保なし
String[] intA = null;

コメントが書けない場合、そこまでの課題や演習を見直して下さい。
それでも書けないのなら、習った範囲を超えたものなので、他の方法を模索してください。

投稿2020/05/17 06:41

YT0014

総合スコア1708

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問