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

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

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

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

Q&A

解決済

5回答

4826閲覧

標準入力から最小最大値を求める

ganbaruyo

総合スコア12

Java

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

0グッド

0クリップ

投稿2018/05/16 15:08

コンパイルがうまくいきません。
どこが間違っているか教えてください。
宜しくお願い致します。

【問題】
標準入力されている数字の最大と最小を求める

【標準入力されている数字】
9
12
3
6
10

import java.util.*; class Main { public static void main(String[] args) { // 自分の得意な言語で // Let's チャレンジ!! Scanner sc1 = new Scanner(System.in); int a = sc1.nextInt(); Scanner sc2 = new Scanner(System.in); int b = sc2.nextInt(); Scanner sc3 = new Scanner(System.in); int c = sc3.nextInt(); Scanner sc4 = new Scanner(System.in); int d = sc4.nextInt(); Scanner sc5 = new Scanner(System.in); int e = sc5.nextInt(); int array[] = {a, b, c, d, e }; int min = 0; for(int i = 0; i < array.length; i++) { if(min > array[i]) { min = array[i]; } } System.out.println("最小値 : " + min); } }

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

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

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

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

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

LouiS0616

2018/05/16 15:11

これPaizaの問題ですよね?Paizaの規約は確認されましたか。
ganbaruyo

2018/05/16 15:25

私そちらのサイト使っていないので。私が選んだ問題ではないのでそのようなことを言われてもわかりません。
LouiS0616

2018/05/16 15:41

それでは、問題の出典はどちらでしょうか。
guest

回答5

0

ベストアンサー

入力値を保持する必要なし

java

1Scanner sc = new Scanner(System.in); 2int min = Integer.MAX_VALUE; 3int max = Integer.MIN_VALUE; 4while (sc.hasNext()) { 5 int value = sc.nextInt(); 6 if (value < min) { 7 min = value; 8 } 9 if (value > max) { 10 max = value; 11 } 12} 13System.out.println("min=" + min + ", max=" + max); 14//min=3, max=12

投稿2018/05/17 04:03

gingertail

総合スコア317

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

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

ganbaruyo

2018/05/17 14:15

簡単におさまるのですね。参考になりました。本当にありがとうございます
guest

0

こんにちは、一番の原因はmin = 0と初期化しているところです。
入力した数値がすべて0より大きいのでmin = 0になっているのです。
最小値minを入力した値の最初の数値などにしておくと正常に動くと思います。

ほかに気になったこと

(i)Scannerを5回も生成する必要はありません。一つで十分です。
.Scanner sc = new Scanner(System.in);

(ii)変数をa,b,c,d,eにすると5回もsc.nextIntも書いていますが
最初から入力する変数を格納する配列を準備するとfor文で済みます。

Java

1import java.util.Scanner; 2 3public class Main { 4 public static void main(String[] args) throws Exception { 5 6 Scanner sc = new Scanner(System.in); 7 int []data = new int[5]; 8 for(int i = 0; i < data.length; i++){ 9 data[i] = sc.nextInt(); 10 } 11 int min = data[0]; 12 13 for(int i = 0; i < data.length; i++){ 14 if(min > data[i]){ 15 min = data[i]; 16 } 17 } 18 System.out.println(min); 19 20 } 21}

別解を言うと

.配列ArrayListを使うと格納された数値をソートすることで最小値を得る方法もあります。

詳しくは配列やListをソートをご覧ください。

(i)配列を使う場合

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) throws Exception { 5 6 Scanner sc = new Scanner(System.in); 7 ArrayList <Integer> array = new ArrayList<>(); 8 9 int []data = new int[5]; 10 11 for(int i = 0; i < 5; i++){ 12 data[i] = sc.nextInt(); 13 } 14 Arrays.sort(data); 15 16 int min = data[0]; 17 System.out.println(min); 18 19 } 20} 21

(ii)ArrayListを使う場合

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) throws Exception { 5 6 Scanner sc = new Scanner(System.in); 7 ArrayList <Integer> array = new ArrayList<>(); 8 9 for(int i = 0; i < 5; i++){ 10 int n = sc.nextInt(); 11 array.add(n); 12 } 13 Collections.sort(array); 14 15 int min = array.get(0); 16 System.out.println(min); 17 18 } 19}

投稿2018/05/17 03:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ganbaruyo

2018/05/17 14:19

詳しくありがとうございます。独学で始めてくじけそうになっているところ、このように教えてくれる方がいると本当に助かります。 参考になります。
guest

0

  • そもそも本当に「コンパイルがうまくいかない」のか?実行時エラーではなくて?
  • なんでScannerを5回も生成しているのか

せっかくなので、Java8からの新クラスを紹介
IntSummaryStatistics

java

1public static void main(String[] args) { 2 IntSummaryStatistics summary = new IntSummaryStatistics(); 3 try (Scanner sc = new Scanner(System.in)) { 4 while (sc.hasNextInt()) { 5 summary.accept(sc.nextInt()); 6 } 7 } 8 System.out.println("最大値: " + summary.getMax()); 9 System.out.println("最小値: " + summary.getMin()); 10}

投稿2018/05/16 15:52

編集2018/05/17 15:07
swordone

総合スコア20651

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

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

ganbaruyo

2018/05/20 18:34

ありがとうございます。質問に丁寧に答えていただいてうれしいです。参考にさせていただきました
guest

0

if(min > array[i]) {

最初に、min = 0 としていますが、
入力値が 全て 0以上のため、 0より小さい値はありません。

投稿2018/05/16 15:49

pepperleaf

総合スコア6383

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

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

ganbaruyo

2018/05/17 14:18

きちんと考えながらプログラムを書かないとと思いました、ありがとうございました。
guest

0

... どこが間違っているか ...

エラーメッセージが、教えてくれているはずです。

追記:

動作するようにしてみました。
MainA.java

java

1import java.util.Scanner; 2 3public class MainA { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 int a = sc.nextInt(); 7 int b = sc.nextInt(); 8 int c = sc.nextInt(); 9 int d = sc.nextInt(); 10 int e = sc.nextInt(); 11 12 int array[] = { a, b, c, d, e }; 13 int min = array[0]; 14 for (int i = 0; i < array.length; i++) { 15 if (min > array[i]) { 16 min = array[i]; 17 } 18 } 19 System.out.println("最小値 : " + min); 20 } 21}

実行例
イメージ説明

コンパイルすると、warning が出ます。
ぜひ、解消させてみてください。

投稿2018/05/16 15:16

編集2018/05/16 16:05
katoy

総合スコア22324

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

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

ganbaruyo

2018/05/16 15:36

何度も訂正してもできないので質問していますありがとうございます
katoy

2018/05/16 16:05

追記しました。
ganbaruyo

2018/05/17 14:16

詳しくありがとうございます。コンパイルでエラーになった時にもきちんと対応できないとだめですね。学びました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問