まず、『コーディング規約』等を守りましょう。
たとえば、コーディング規約には含まれないかもしれませんが、インデントを使うです。
たとえば、質問にある
Java
1public class Main {
2public static void main(String[] args) {
3
4int num =1;
5System.out.println(num);
6for(int i=0; i<10; i++){
7 num *= 2;
8}
9 System.out.println(num);
10
11}
12}
は、
Java
1public class Main {
2 public static void main(String[] args) {
3 int num =1;
4 System.out.println(num);
5 for(int i=0; i<10; i++){
6 num *= 2;
7 }
8 System.out.println(num);
9 }
10}
のように、インデント(Tabキーか半角スペースでやるやつ) を入れましょう。
そうしないと、入れ子の入れ子とかのときに相当読みづらくなります。
1人で開発する場合でも、一か月後の自分は赤の他人です。
一か月前の自分が書いたコードを読むと、「あれ? なんでこんな風に書いたんだっけ……」とわからなくなることもしばしば。
ましてや複数人で開発したり、コードレビューしてもらったり、質問したりする場合は、
赤の他人が読むわけですから、なおさらです。
次に、『プログラミングは「こう書けばいい」ではなく』、
『プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である』です。
よって、『現実世界でならどうするか』です。
今回の場合、
[依頼]
2^10 (2の10乗)を計算し、その結果を言ってくれ。
みたいなものです。
更に、『他人のコードを読む場合は、一行レベルでなにをしているかを考えながら読む』です。
たとえばコメント文として書くとか。
自分のコードでも同じです。
たとえば、
Java
1public class Main {
2 public static void main(String[] args) {
3 // 変数numを初期値 1として宣言
4 int num =1;
5 // numの値を出力する
6 System.out.println(num);
7 // iの初期値: 0, iが10以下の間, インクリメントしながら処理(= 10回ループ )
8 for(int i=0; i<10; i++){
9 // 現在のnumを2倍にする
10 num *= 2;
11 }
12 // numの値を出力する
13 System.out.println(num);
14 }
15}
と言う風に。
そして、これを日本語なり英語なり韓国語なりスペイン語なりの言語、つまり自分が読み書きできる言語で書き下す。
Java
11. 変数num を初期値 1 として宣言
22. numの値を出力する
33. iの初期値 = 0 で、iが10以下の間、インクリメントしながら処理(= 10回ループ)
4 3.1. 現在のnumを2倍にする
54. numの値を出力する
そして、それを現実世界で、手作業でやってみる。
脳内でもいいです。とにかくロジックを試す。
そうすると、『なぜ(2)で出力しているのだろうか』と気になりませんか?
それが原因じゃないかなと。
[追記0]
後、質問文を修正するのは良いですが、元のコードは残しておきましょう。
後から見始める人からすると意味が分からなくなることが多いからです。
頑張ってみてください。(^O^)/