teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

蛇足

2015/04/27 09:14

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -24,4 +24,10 @@
24
24
  ```
25
25
 
26
26
  余談ですが,printlnメソッドはString型,boolean型,char型以外の引数を取った時
27
- String.valueOfメソッドが内部で実行されるので,ロスかと言われるとやや疑問です.
27
+ String.valueOfメソッドが内部で実行されるので,ロスかと言われるとやや疑問です.
28
+
29
+ ---
30
+
31
+ 更に余談
32
+ 数値→文字列変換は色々方法がありますが,その速さに関して面白い実験をした方がいました.
33
+ →[あえて言うほどではない 数値 ⇔ 文字列変換 Java編](http://www.techscore.com/blog/2012/11/28/%E6%95%B0%E5%80%A4-%E2%87%94-%E6%96%87%E5%AD%97%E5%88%97%E5%A4%89%E6%8F%9B-java%E7%B7%A8/)

4

余談

2015/04/27 09:14

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -21,4 +21,7 @@
21
21
  }
22
22
 
23
23
  }
24
- ```
24
+ ```
25
+
26
+ 余談ですが,printlnメソッドはString型,boolean型,char型以外の引数を取った時
27
+ String.valueOfメソッドが内部で実行されるので,ロスかと言われるとやや疑問です.

3

不適なコードを削除

2015/04/27 06:57

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,35 +1,3 @@
1
- 文字列変換した後,printlnしているからロスだと言われているような気がします.
2
- 数字だけ出力して,3か5の倍数の時だけ特定の文字を追加で出力するようにするといいのではないでしょうか.
3
- ```lang-java
4
- public class Forked {
5
- public static void main(String[] args) {
6
- for (int i = 1; i <=50; i++){
7
- //まず数字iを出力
8
- System.out.print(i);
9
-
10
- //3の倍数の時"!"を出力
11
- if (i % 3 == 0){
12
- System.out.print("!");
13
- }
14
-
15
- //5の倍数の時"?"を出力
16
- if(i % 5 == 0){
17
- System.out.print("?");
18
- }
19
- //改行
20
- System.out.println();
21
- //System.out.print(\n); こちらでも可
22
- }
23
- }
24
-
25
- }
26
- ```
27
- 改行しないprintメソッドを使い,数字の後に特定の記号がついてもつかなくても
28
- 目的の処理ができるようにします.
29
-
30
- ---
31
-
32
- 追記
33
1
  だとしたら,付ける記号を別に用意しておけばいいのではないでしょうか?
34
2
  ```lang-java
35
3
  public class Forked {

2

別案

2015/04/27 06:16

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -25,4 +25,32 @@
25
25
  }
26
26
  ```
27
27
  改行しないprintメソッドを使い,数字の後に特定の記号がついてもつかなくても
28
- 目的の処理ができるようにします.
28
+ 目的の処理ができるようにします.
29
+
30
+ ---
31
+
32
+ 追記
33
+ だとしたら,付ける記号を別に用意しておけばいいのではないでしょうか?
34
+ ```lang-java
35
+ public class Forked {
36
+ public static void main(String[] args) {
37
+ for (int i = 1; i <=50; i++){
38
+ //記号を格納するString変数を用意
39
+ String signal = "";
40
+
41
+ //3の倍数の時signalに"!"を追加
42
+ if (i % 3 == 0){
43
+ signal += "!";
44
+ }
45
+
46
+ //5の倍数の時signalに"?"を追加
47
+ if(i % 5 == 0){
48
+ signal += "?";
49
+ }
50
+ //表示
51
+ System.out.println(i + signal);
52
+ }
53
+ }
54
+
55
+ }
56
+ ```

1

コード

2015/04/27 06:06

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,28 @@
1
1
  文字列変換した後,printlnしているからロスだと言われているような気がします.
2
2
  数字だけ出力して,3か5の倍数の時だけ特定の文字を追加で出力するようにするといいのではないでしょうか.
3
+ ```lang-java
4
+ public class Forked {
5
+ public static void main(String[] args) {
6
+ for (int i = 1; i <=50; i++){
7
+ //まず数字iを出力
8
+ System.out.print(i);
9
+
10
+ //3の倍数の時"!"を出力
11
+ if (i % 3 == 0){
12
+ System.out.print("!");
13
+ }
14
+
15
+ //5の倍数の時"?"を出力
16
+ if(i % 5 == 0){
17
+ System.out.print("?");
18
+ }
19
+ //改行
3
- ヒントは,printlnではなくprintを使います.
20
+ System.out.println();
21
+ //System.out.print(\n); こちらでも可
22
+ }
23
+ }
24
+
25
+ }
26
+ ```
27
+ 改行しないprintメソッドを使い,数字の後に特定の記号がついてもつかなくても
28
+ 目的の処理ができるようにします.