先に前提から。
プログラミングは「こう書けばいい」っていうものじゃありません。
簡単に言えば、プログラミングは「現実世界のシミュレーション」です。
for文だのif文だの変数だのはあくまで道具です。
まず、質問者さん、プログラミングだのJavaだのは置いといて、「現実世界でならどうするか」を考えてみましょう。
たとえば数学の問題なり、質問にあるものを手作業でやるなりとかです。
今回のものは、言い換えるとわけわかんないものになりそうですが、たとえば、
[依頼]
ここに長方形の画用紙が一枚ある。これに0~99までの数字を、
"0,1,2,...,98,99,"
というように書いていく。この0~99が書かれた画用紙を s とする。
あなたはこのsをハサミで切り分け、黒板に
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
...
99,
のように張り付けていく作業をしなければならない。
この作業を行なえ。
的な依頼かなんかがあると考えてみてください。(他にいいたとえがあればいいが、思いつかん…)
普通に考えれば、とりあえず0~99を "0,1,2,...,98,99," のように画用紙に書く。
そして、それを "," を区切り文字として、ハサミを入れていくとかですね。
これを実装すればいいだけです。
まず、画用紙に書く ... これは 本来の問題文であれば 「文字列 s」ですね。
単純に 文字列 s に数字等を突っ込んでいく。
規則性を見ると、
<数字>,<数字>,<数字>,...,<数字>,
となっています。なので常に <数字> の直後に "," を書けばいいだけです。
で、肝心のコード。
それなら、質問にあるコードでいいやん。って思いますか?
でもそのコード、エラーを吐きますよ。
Java
1public class HelloWorld{
2public static void main(String args[]){
3
4 for (int a = 0; a < 100; a++) {
5 String s = a + ",";
6 }
7}
8}
Paiza.IOで動かしてみたところ、
Main.java:5: error: illegal character: '\u3000'
String s = a + ",";
^
と出ます。
このエラーメッセージを検索キーワードとして、
「Java error: illegal character: '\u3000'」と検索してみます。
すると、ここによると、
「全角スペースが含まれていることが原因」のようです。
なので、全角スペースを半角スペース(またはTabキー)に書き換えましょう。
Java
1public class HelloWorld{
2public static void main(String args[]){
3 for (int a = 0; a < 100; a++) {
4 String s = a + ",";
5 }
6}
7}
するとエラーが消えました。
ですが、ソースコードが汚いです。
これを同僚とかから渡されたら、「わざとやっているのでしょうか」と思いたくなるレベルです。
インデント(半角スペースやTabキーでやるアレ)がアレすぎる。
Javaとかならまだいいけど、Pythonとかになると、意味が相当変わってくるレベルです。
なので揃えちゃいましょう。
Java
1public class HelloWorld{
2 public static void main(String args[]){
3 for (int a = 0; a < 100; a++) {
4 String s = a + ",";
5 }
6 }
7}
これで少しはましになりましたね。
次はコードを読んでみましょう。
コードを読むコツは『一行レベルで、その行が何をしているかを考えながら読む』です。
Java
1// HelloWorldクラスを定義
2public class HelloWorld{
3 // mainメソッドの定義
4 public static void main(String args[]){
5 // 変数aを宣言し、初期値を0とする。そして aが100未満である間、+1しながら繰り返す
6 for (int a = 0; a < 100; a++) {
7 // 文字列 s を宣言し、s に <整数> + "," をセットする
8 String s = a + ",";
9 }
10 }
11}
これを疑似コードとして切り出す。
1. 変数a を宣言し、初期値を0とする。そして a が 100未満である間、+1しながら繰り返す
1.1. 文字列 s を用意し、sに <整数> + "," をセットする
これを現実世界で手作業でシミュレーションしてみてください。
つまり、実際に値を入れて計算したりする感じです。
まず、(1)によって、a = 0 となる。(初期値だから)
で、現在の値は 0 。それを (1.1) で さっきの例えであれば、画用紙を取り出して、そこに
"0," と書く。
次に、(1)に戻り、a = a + 1 = 0 + 1 = 1 となり、a = 1 となる。
なので a = 1。
で、(1.1)に行き、(さっきの画用紙を破り捨てて) 新たに画用紙を取り出して、その新しい画用紙に
"1," と書く。
で、また(1)に戻り、a = 1 + 1 = 2 で、a = 2 となる。
さらに(1.1)で (さっきの画用紙を破り捨てて)新たに画用紙を取り出して、その新しい画用紙に
"2," と書く。
…とやっていき、
a = 99 で 同じようにさっきの画用紙を破り捨てて、新たな画用紙に書く。
で(1)に戻りますが、a = 99 + 1 = 100 で a = 100 ですね。
それは条件式 a < 100 を満たさないため、ここで終了。
そして結果は、s = "99," となる。
でも、この画用紙、(1)のブロックから抜けると消滅しちゃいます。
なので、
Java
1// HelloWorldクラスを定義
2public class HelloWorld{
3 // mainメソッドの定義
4 public static void main(String args[]){
5 // 変数aを宣言し、初期値を0とする。そして aが100未満である間、+1しながら繰り返す
6 for (int a = 0; a < 100; a++) {
7 // 文字列 s を宣言し、s に <整数> + "," をセットする
8 String s = a + ",";
9 }
10 System.out.println( s ); // ここ
11 }
12}
で表示しようとしても、そもそも無いものは出せません。
なのでまたエラーに。
原因は、(1.1) で s を宣言していること。
プログラミングでの変数等は、スコープと呼ばれる、使える範囲が決まっています。
(言語によってはそんなに問題ではない場合も?)
for文の{...} 内で宣言すると、その中でしか使えません。
なので(1)に行くときや、ブロック外でsを参照しようとしても、「んなもん、ねーよ」と怒られるのです。
{...} のブロック内でしか使えないのだから、宣言する場所は、(1)の前とかになります。(場合に寄るが、今回はここ)
そうすれば、スコープは『mainメソッドから抜けるまで』となります。
詳しくは『Java 変数 スコープ』とかで検索してください。
そして、文字列s のスコープが「mainメソッド内」になれば、「文字列に固めた後に」出力できますから、改行の問題はありません。(あるにはあるが、今回はそんなに問題なしと思う)
また、単純に改行無しで出力するなら、他の方々が仰るように、printlnメソッドではなく、printメソッドを使えですね。
公式ドキュメントを参照してください。
つまり、基礎ができていないことが原因。