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

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

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

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

Q&A

解決済

3回答

8189閲覧

出力文字数の制限方法がわからない。

Nerd_run.

総合スコア60

Java

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

0グッド

1クリップ

投稿2018/03/29 04:08

編集2018/03/29 04:18

プログラミングの問題を解くことで、美少女を自分好みに着せ替えれるゲームをしているですが、問題がわかわず困っています。

何個区切りで出力するのか(n)、全体の文字列の長さはどれがくらいか(m)
RとWを使って、指示通りの縞模様を出力するプログラムなのですが、
うまく指定できません。

入力例

10

出力
RRRWWWRRRW

java

1 Scanner sc = new Scanner(System.in); 2 int n = sc.nextInt(); 3 int m = sc.nextInt(); 4// for( ?? 5 for( int i = 0; i < n; i++ ){ 6 System.out.print( "R" ); 7 } 8 for( int j = 0; j < n; j++ ){ 9 System.out.print( "W" ); 10 } 11 } 12}

n個ずつ区切って出力を繰り返すだけなら簡単なのですが、文字数がmで処理を終了するにはどうしたらいいのでしょう?

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

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

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

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

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

fuzzball

2018/03/29 04:10

プログラミングの問題を解かなくても、美少女を自分好みに着せ替えれるゲームを探した方が良いと思います。
miyabi-sun

2018/03/29 04:13

paizaの質問しちゃダメですよ、あれは採用の奴も兼ねてるので
Nerd_run.

2018/03/29 04:15

これにはスキルチェックのような注意書きはないですよ。
fuzzball

2018/03/29 04:17 編集

@miyabi-sunさん ゲーム系はそういう縛り無いです。(被ったw)
退会済みユーザー

退会済みユーザー

2018/03/30 00:01

回答は公開してもいい(むしろ推奨)らしいが質問しながら組み立てるのはちょっと違うとおもう。(暇なときにネタコードあげるかも)
Nerd_run.

2018/03/30 00:09

回答は公開していいんですね! それはスキルチェックもでしょうか? 私のような右も左もわからないような初心者にはそもそもアウトプットする材料がないので、とりあえず無理やり組み立てて、アルゴリズムを理解をしようと考え、こういう形になりました。
退会済みユーザー

退会済みユーザー

2018/03/30 00:18

スキルチェックはアウト
退会済みユーザー

退会済みユーザー

2018/03/30 00:19 編集

引用:そのため、これまでのpaizaオンラインハッカソン同様、問題内容や回答コードについてブログ等で公開してもOK!!という形をとっています。(むしろ公開していただけますとpaizaとしても大変嬉しいです!!)
退会済みユーザー

退会済みユーザー

2018/03/30 00:23

Paiza オンラインハッカ損とPaiza ゲームはこのスタンスらしい
Nerd_run.

2018/03/30 00:32

なるほど。 では、paizaゲームについては調べれば見つかる可能性があるんですね。 ちょっとすっきりしました。 身近に聞ける人もいないので、paizaの問題は解く前に、解けるだけのインプットがないとずっとわからず、もやもやが残るだけかと思ってました。
guest

回答3

0

長いですがわかりやすく。

Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); StringBuilder builder = new StringBuilder(); while (true) {

for( int j = 0; j < n; j++ ){
builder.append("R");
}
for( int j = 0; j < n; j++ ){
builder.append("W");
}
if (builder.length() >= m) {
System.out.println(builder.toString().substring(0, m));
break;
}
}

投稿2018/03/29 14:43

Xena

総合スコア16

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

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

swordone

2018/03/29 15:35

builderから直接substringすればよりよい。
Nerd_run.

2018/03/29 21:29

StringBuilderってのがあるんですね。 応用できるように色々試してみます。 回答ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/03/29 23:51

setLength(int)で詰めれたような記憶が
swordone

2018/03/30 00:51

setLengthの後新たに文字を入れたりしないのなら意味ないのでは
退会済みユーザー

退会済みユーザー

2018/03/30 01:16 編集

toString の 内部的に 「new String(/*char[]*/, 0, /* setLength で設定した値 */count=10)」よんでたはずだから処理が早かったはず
guest

0

ベストアンサー

まともに JAVA

java

1public class StrLimit1 { 2 3 public static void main(String[] args) { 4 exec(10, 3); // RRRWWWRRRW 5 exec(13, 3); // RRRWWWRRRWWWR 6 exec(15, 3); // RRRWWWRRRWWWRRR 7 exec(10, 4); // RRRRWWWWRR 8 exec(10, 5); // RRRRRWWWWW 9 exec(10, 11); // RRRRRRRRRR 10 } 11 12 public static void exec(int m, int n) { 13 StringBuilder str = new StringBuilder(m); 14 do { 15 if (str.length() % n == 0) 16 for (int i = 0; i < n; i++) 17 str.append("R"); 18 str.append("W"); 19 } while (str.length() <= m); 20 str.setLength(m); 21 System.out.println(str); 22 } 23 24}

いやがらせの PHP

<?php $m = 10; $n = 3; echo substr(str_repeat(str_repeat("R",$n).str_repeat("W",$n), $m),0,$m);

投稿2018/03/30 03:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/03/30 03:41

ネタ echo str_pad("", $m, str_repeat("R",$n).str_repeat("W",$n));
退会済みユーザー

退会済みユーザー

2018/03/30 05:24

コードゴルフはじめてるし。
退会済みユーザー

退会済みユーザー

2018/03/30 06:09 編集

ワンラインでかつループを明記してないからパッと見なにしてるかわからないのがみそw→PHP
Nerd_run.

2018/03/30 20:42

なぜPHP?と思ってましたが、PHPのほうが簡単に記述できるんですね。 javaの方はScanner対応のものにしてみました。 流れと認識をコメントに書いたので、間違っている箇所がある場合は、ご指摘願います。 import java.util.*; public class hoged { public static void main( String[] args ){ Scanner sc = new Scanner( System.in ); int n = sc.nextInt(); //入力を受け取る int m = sc.nextInt(); StringBuilder str = new StringBuilder(); //格納庫(str)を作る do{ for( int i = 0; i < n; i++ ){ str.append( "R" ); //strに格納 } for( int j = 0; j < n; j++ ){ str.append( "W" ); // strに格納 } // for文のループ後の値を見る必要があるため、do-while文で条件式を下に記入 } while( str.length() <= m ); // strの文字数を制限 str.setLength(m); // 制限文字数を指定 System.out.println( str ); // 出力 } }
退会済みユーザー

退会済みユーザー

2018/03/31 01:36

do-while にしてるのは趣味以外のなんでもないです。(このループでのコストは大して変わらない) 最低1回は実行するのでねw それ以外はおおむねその通りかな
Nerd_run.

2018/03/31 04:39

えw どうやって書けばdo-whileを使わずに同じ処理ができるんですか!? 上のコードを弄ってるときに、for文や、if文で、もっと簡単に書けないかと試行錯誤したのですが、do-while以外では上手く処理できなかったので教えて欲しいです。
退会済みユーザー

退会済みユーザー

2018/03/31 05:06

1. 普通に while(str.length() <= m { /*proc*/ } 2. ちょっとこって for (; str.length() <= m;) { /*proc*/ }
Nerd_run.

2018/03/31 08:12

あ、できました。 str.setLength(m)をfor文の上に書いてたからうまくいかなかったみたいです。 下にもっていくと同じ処理になりました。 おかげさまでこのアルゴリズムはばっちり理解できたようです。 何回も質問に答えていただきありがとうございました。
guest

0

エロは人類を進化させると思っていたんだけど、違うみたいですね。

ちょっと嫌がらせしときます。

PHP

1<?php 2 3$n = 3; 4$m = 10; 5$type = 0; 6 7while($m > 0) 8{ 9 for($i = 0; $i < $n; $i++) 10 { 11 echo ($type % 2 === 0)? "R" : "W"; 12 13 if(--$m <= 0){ break; } 14 } 15 16 $type = (++$type > 1)? 0 : $type; 17} 18

投稿2018/03/29 04:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Nerd_run.

2018/03/29 04:30

進化途中であります。 エロくないゲームなんでもう少しお手柔らかにお願いします!
退会済みユーザー

退会済みユーザー

2018/03/29 23:43

(++$type)%2 はつかえないんだっけ?
退会済みユーザー

退会済みユーザー

2018/03/30 00:49

大丈夫だと思うよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問