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

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

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

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

配列

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

Q&A

解決済

2回答

1387閲覧

同じインデックス番号同士を比べる方法

Chibichan

総合スコア72

Java

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

配列

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

0グッド

0クリップ

投稿2020/08/18 18:07

名前と年齢を順に入れていき、あとでカンマで名前と年齢を区切って配列にしてから、インデックス番号1の年齢を順に比べていき一番年上の数字を出したいです。
例えば、晃 10、和美 20、良子 30をカンマで名前と年齢を区切ってその後年齢を比べていって最後に30と出したいですが、どうやって同じインデックス番号同士を比べたらいいのか思いつきません。
よろしくお願いいたします。

import java.util.Scanner; public class VanhimmanIka { public static void main(String[] args) { Scanner lukija = new Scanner(System.in); while (true) { String num = lukija.nextLine(); if (num.equals("")) { break; } String[] parts = num.split(","); for(String part:parts){ int age = Integer.valueOf(parts[1]); int oldest = Integer.valueOf(part); if (oldest>age){ System.out.println("The oldest age is " + oldest); } } } } } コード

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

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

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

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

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

m.ts10806

2020/08/18 22:29 編集

同じ質問を投稿されてませんか? 質問は編集できますので新たに投稿する必要はありません。回答がついていないほうを削除依頼出しておいてください。 また、前の質問にも書きましたが、現状のコードがどこまでできていて何ができていなくて何が問題かを記載してください
yureighost

2020/08/19 00:28

Scannerで入力するコンソールの形式がどのようなものを想定しているのかを正確に書いてください。 問題文とソースを見る限りでは1行で全てのレコードを入力したいように見えますが、 既にある回答だと1行1レコードと解釈されてますし。 文字列の処理は入力する側もきちんと仕様を指定してくれないと対応できません。
Chibichan

2020/08/19 05:23

Javaと記入するところをJavaScriptと間違えて入力しまして、指摘があったので、削除しようと思いましたが、どこからしたらいいのかわかりませんでした。
m.ts10806

2020/08/19 05:42

回答がついた質問は削除できません。運営に直接問い合わせてください。 ただ、解決済みにしてしまっていますよね。この対応はまずいかと。 せめてタグと質問内容を修正してなおしておいてください。
guest

回答2

0

ベストアンサー

単純に、oldestをループの外側で定義するのと、ageと比較したときに更新すれば良いです。

java

1import java.util.Scanner; 2 3public class VanhimmanIka { 4 5 public static void main(String[] args) { 6 Scanner lukija = new Scanner(System.in); 7 int oldest = 0; // oldest をループの外側に移動 8 while (true) { 9 String num = lukija.nextLine(); 10 if (num.equals("")) { 11 break; 12 } 13 String[] parts = num.split(","); 14 15 // このループいらないのでは? 16 // for(String part:parts){ 17 int age = Integer.valueOf(parts[1]); 18 // int oldest = Integer.valueOf(part); 19 if (oldest < age){ // age が 大きいなら oldest を更新 20 oldest = age; 21 // oldestが更新されるごとに表示したいなら、ここで表示 22 // System.out.println("The oldest age is " + oldest); 23 } 24 //} 25 } 26 // ループを抜けたら結果を表示 27 System.out.println("The oldest age is " + oldest); 28 } 29} 30

投稿2020/08/18 19:18

編集2020/08/18 19:31
momon-ga

総合スコア4820

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

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

momon-ga

2020/08/18 19:39

"晃,10," "和美,20" "良子,30" みたいな3回の入力になる想定なので、forループいらない想定。
Chibichan

2020/08/19 05:28

ありがとうございます!ループと思い込んでました!その都度、比べていくので、ループは必要ないですね。
guest

0

こういう場合には、拡張for文を使用せずに、普通のfor文で回した方が良いです。
普通のfor文であれば、インデックスを得られるので、
インデックスが奇数であれば名前、偶数であれば年齢、という風に扱いを分けることができます。

(名前と年齢をセットにして扱うので2つで一つとなるクラスを作ってしまうのも一つの手です)

データ構造を勘違いしてました。
1つ1行のデータなのね。

投稿2020/08/18 19:02

編集2020/08/18 22:33
amiya

総合スコア1216

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問