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

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

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

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

Q&A

解決済

2回答

4703閲覧

整数を入力し1~入力した値までの偶数と奇数を表示したい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2019/06/09 01:03

前提・実現したいこと

import java.util.Scanner;

public class Review05 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("正の整数を入力してください");
int a=sc.nextInt();
String str ="1~"+a+"までの間の";
System.out.println();
str +="偶数は";
for(int i = 2;i <=a;i +=2) {
str +=i+"";
}
str +="です";
System.out.println();
str +="奇数は";
for(int i = 1;i <=a;i +=2) {
str +=i+"";
}
str +="です";
System.out.println(str);
sc.close();

}

}
これだと偶数と奇数は出るのですが1~5までの間の偶数は24です奇数は135ですとなってしまいます。
実行結果を
1~5までの間の
偶数は2 4 です
奇数は1 3 5 です
となるようにするにはどうすればよいでしょうか。
5は例えです。

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

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

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

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

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

1T2R3M4

2019/06/09 02:24

"偶数は","奇数は"の前の+をとって 毎回strを出力するのはいかがでしょうか。
退会済みユーザー

退会済みユーザー

2019/06/09 02:38

実際にコードを打ってもらうことは出来ますでしょうか?? javaを始めたばかりでstrの出力方法がわからないです...
1T2R3M4

2019/06/09 02:41

あなたが掲載しているコードの中でstrを出力している部分がありますが。 掲載したのは他人が書いたコードですか。
退会済みユーザー

退会済みユーザー

2019/06/09 02:53

わかりました。ありがとうございます。
guest

回答2

0

java

1package teratail; 2 3import java.util.Scanner; 4 5public class Review05 { 6 public static void main(String[] args) { 7 Scanner sc = new Scanner(System.in); 8 System.out.println("正の整数を入力してください"); 9 int a = sc.nextInt(); 10 11 String lines[] = { "", ""}; 12 for (int i = 1; i <= a; i ++) { 13 lines[i % 2] += i + " "; 14 } 15 16 System.out.printf( "1~%dまでの間の\n偶数は%sです\n奇数は%sです\n", a, lines[0], lines[1]); 17 sc.close(); 18 } 19}

実行例
イメージ説明

追記
質問文のコードを活かしたかたちで出力の改行を修正するコード例を示します。
( \n を string 中にいれてやれば、 println 時に改行になります。string を組み立ている最中に orintln() しても string 中に改行がはいるわけはありません)

java

1package teratail; 2 3import java.util.Scanner; 4 5public class Review05 { 6 public static void main(String[] args) { 7 Scanner sc = new Scanner(System.in); 8 System.out.println("正の整数を入力してください"); 9 int a = sc.nextInt(); 10 String str = "1~" + a + "までの間の\n"; 11 str += "偶数は"; 12 for (int i = 2; i <= a; i += 2) { 13 str += i + " "; 14 } 15 str += "です\n"; 16 str += "奇数は"; 17 for (int i = 1; i <= a; i += 2) { 18 str += i + " "; 19 } 20 str += "です"; 21 System.out.println(str); 22 sc.close(); 23 } 24}

実行例
イメージ説明

投稿2019/06/09 04:02

編集2019/06/09 07:54
katoy

総合スコア22324

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

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

katoy

2019/06/09 04:25

低評価の理由を教えてください。 修正・対応します。
javahack

2019/06/09 06:06

低評価を付けてはいませんが。 質問者のコードは未熟な部分はありますが、あと一歩のところまでできていたので、元のコードを活かすように回答して問題解決へ導いた方がよかったのではと思います。 横から失礼しました。
katoy

2019/06/09 07:24

> ... 元のコードを活かすように回答して問題解決へ導いた方がよかったのでは ... 室温文にあるコードの延長にはない、別の発想でのコードを示すことのほうが役立つと,私は思っています。 とくに for ループを 2つでなく 1つにしている部分や、最終出力の文言/改行が 一箇所だけにまとめていることなどの工夫は、質問文のコードを少し いじっていくことことの延長では独力で気がつけないとおもいます。
katoy

2019/06/09 07:33

"魚をあたえるか、釣り方を教えるか" とは別に、 !別の魚を与える" (差について調査するための気付きを示す) というのも有りなのでは?
javahack

2019/06/09 12:55

なるほど、”別の魚を与える”という発想はありませんでした。 現在の問題の解決だけではなく、さらに先のスキルアップのためにはそのような導き方も良いかも知れませんね。 関係のない第三者のコメントにも拘らず、真摯に対応いただきありがとうございました。
退会済みユーザー

退会済みユーザー

2019/06/13 01:54

お二方ともご指導ありがとうございました。
guest

0

ベストアンサー

Java

str +=i+"";

空文字の代わりに " " とか "\t" でも足してやれば良いでしょう。

投稿2019/06/09 01:06

LouiS0616

総合スコア35658

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

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

退会済みユーザー

退会済みユーザー

2019/06/09 01:18

数字間に空白を足すことはできたのですが偶数と奇数を別の行にするにはどうすればよいでしょうか...
javahack

2019/06/09 01:32

横から失礼します。 行を分けたい文字列毎に別の変数を用意し(str1、str2、str3など)、 それぞれをSystem.out.printlnで出力してはどうでしょうか。
LouiS0616

2019/06/09 08:00 編集

javahackさんの方法でも良いでしょうし、 偶奇をそれぞれリストにでも放り込んで最後にまとめて出力しても良いでしょう。 Stringの結合は計算コストが高いので避けられがちです。StringBuilderを使えばコストは抑えられますが、出力メッセージの作成が分散するのでやはり可読性に難があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問