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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

3625閲覧

Javaでのnext()メソッドの作り方について

yoritomo

総合スコア7

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/06/11 00:19

編集2021/06/11 00:44

Javaでメソッドを勉強しているのですが、演習問題にあるnext()メソッドを作る方法が単純ながら全然分からなくて困っております。
まず、メソッドnext(p)というのは配列によるリスト内の位置pの直後の位置を返すというものです。

このメソッドは単に配列のpの位置にある所から+1番目の配列を出力すれば良いということだけなのですが、そのやり方が分かりません…

以下が私が作ったnext()メソッドです。

int next( int N) { int tempN; return tempN =value[N+1]; }

以下が他のメソッドとメインクラスを合わせた全プログラムで、S.next(4)と書いて次々入力してリストSに格納されたvalの4+1番目を出力したつもりです。

import java.util.Scanner; class list { // 配列を用いたリスト構造 int N; // 要素数 int[] value; // 整数の配列 list() { // コンストラクタ N=0 ; value=new int[100000]; } void insertLast( int v ) { // 最後に挿入 value[N]=v ; N++ ; } void print() { // 表示 int k ; for (int k1=0; k1<N; k1++) System.out.print( value[k1] + " " ) ; System.out.println() ; } int next( int N) { int tempN; return tempN =value[N+1]; } } public class method{ public static void main(String[] args) { Scanner stdin = new Scanner( System.in ) ; list S = new list() ; int val = 0, k; while( stdin.hasNextInt() ) { // 最後まで val=stdin.nextInt() ; // 要素 S.insertLast( val ) ; // 最後に挿入 } S.print() ; // すべて表示 S.next(4); System.out.println("全部で" + S.N + "件") ; } }

以上の様に書いたのですが、やはり動きませんでした。
間違いの指摘やアドバイスをいただければ幸いです。
よろしくお願いしますm(_ _)m

動作確認の不具合の説明のが不十分だっため、追記させていただきます。

上のプログラムを実行し、任意の整数を複数キーボード入力するとそれらが一つ一つリストの最終位置に格納され、正順にに表示されるのですが、
S.next(4)と書いた部分のnext()メソッドの部分が全くコンソール画面に出力されませんでした。
「メソッドの文が全く機能していない」or「出力の仕方が間違っている」
という事だと思うのですが、その点などを教えていただければ幸いです。

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

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

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

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

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

y_waiwai

2021/06/11 00:26

動きません、とはどういうふうに動くんでしょうか。 詳しく説明しましょう
m.ts10806

2021/06/11 00:27

そもそもインデントぐちゃぐちゃなのはイカンかと。
yoritomo

2021/06/11 00:40

ご返信ありがとうございます。 動作確認の不具合について説明不足でした。 上に記載したプログラムを実行し、任意の整数を複数キーボード入力するとそれらが一つ一つリストの最終位置に格納され、正順にに表示されるのですが、S.next(4)と書いた部分のnextメソッドの部分が全くコンソール画面に出力されませんでした。 「メソッドの文が全く機能していない」or「出力の仕方が間違っている」 という事だと思うのですが、その点などを教えていただければ幸いです。 ガイドライン違反大変失礼致しました。
neconekocat

2021/06/11 00:45

nextは数値を返すだけなんだからその値をprintln等で出力しないと画面に出ないのは当然では?
dodox86

2021/06/11 00:51

問題文自体はちゃんと解釈して理解されている前提で大丈夫でしょうか。そうでないと、あらぬ方向へコードを書き進めてしまいます。何となく、オブジェクト自身が抱えている配列要素の次を返すメソッドの様な。
yoritomo

2021/06/11 00:52

neconekocat様、回答ありがとうございます。 S.next()でてっきり出力出来るのかと思っていました… これは値を返している(?)だけなのですね。 S.next()を変数numに代入して、printlnで書いたところ、何となくそれらしい出力結果が出ました。 ありがとうございます。
neconekocat

2021/06/11 01:06

自分が書いたメソッドの意味を理解できていないのは流石に・・・
guest

回答1

0

ベストアンサー

問題は、next()メソッドの結果がコンソールに出力されない。
ということでいいですね?
以下のようにしましょう。

Java

1System.out.println(S.next(4));

ちなみに、Javaではクラス名は大文字始まり、変数は小文字始まり、というのが慣例ですので、
そこだけは変なクセが付く前に絶対に直した方がいいと思います。

投稿2021/06/11 01:29

root_jp

総合スコア4666

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

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

yoritomo

2021/06/11 01:47

ありがとうございます! 本当にそこが根本的にわかっておりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問