10列10行の文字列表示について

このQ&Aのポイント
  • Java超初心者の私が10列10行の文字列表示を作成する方法について悩んでいます
  • 現在、私はJavaのAppletを使用して10列10行の文字列表示を作ろうとしていますが、うまくいきません
  • 何がいけないのかわからず、1日中試行錯誤しています。どなたかご教授いただけないでしょうか?
回答を見る
  • ベストアンサー

10列10行の文字列表示について

お世話になります。 Java超初心者です。 現在、10列10行の文字列を作成しようとしているのですが、 全然うまくいきません。 import java.applet.*; import java.awt.*; public class kadai3 extends Applet{ public void paint(Graphics g){ int xPosition=10, yPosition=20; String Star = ""; for (int i=0;i<5;i++){ Star = Star +"★"; for(int j=0;j<5;j++){ g.drawString(Star,xPosition, yPosition); yPosition = yPosition+10; } } } } こうすると、1列目は25個の星、2列目は上から5行開いて20個の星、 3列目は上から10行開いて15個の星、4列目は上から15行開いて 10個の星、5列目は上から20行開いて5個の星、という形になってしまいます。 それ以外にも、この式の中身の順番をいろいろ変えてみたのですが、 さっぱり綺麗な「10列X10行」になりません・・・ 1日ずっと格闘してて、どうしてもできないので、 何がいけないのかどなたかご教授いただけないでしょうか。 どうぞよろしくお願いいたします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

for (int i=0;i<5;i++){ Star = Star +"★"; for(int j=0;j<5;j++){ g.drawString(Star,xPosition, yPosition); yPosition = yPosition+10; } } この部分が悪いからそうなるでしょう。 星1個増やしては5回位置を下にずらした後に星を付加するようになってるじゃん。 for文の中にfor文を書いたら中のfor文が終わるまで実行されてから1つ外にいく。 その部分を↓に変えれば良いよ。 for (int i=0;i<10;i++){ Star = Star +"★"; } for(int j=0;j<10;j++){ g.drawString(Star,xPosition, yPosition); yPosition = yPosition+10; } starを10個作ったものを10回下に描いていきます。 プログラムは真剣にやらないと上達しないので頑張ってください。

w_dragon
質問者

お礼

うわぁ~ありがとうございます!!!! 昨日一日考えて、頭が変になっていました・・・ 数字も5にしたまま(いろいろ変えてやってみたので) 質問出しちゃってるし。。。 そうか、forのくくりを一旦閉じてしまうんですね! もう一つのforを中に入れなければいけないと思いこんでいました。 本当にありがとうございます! 今日も勉強がんばります!

関連するQ&A

  • forを使用した文字列表示プログラムについて

    お世話になります。 Javaの超初心者です。 以下のプログラムがあるのですが、どうしてもわからないのでご教授願います。 import java.applet.*; import java.awt.*; public class DrawStarRow extends Applet { public void paint(Graphics g){ String star = ""; int xPosition = 10, yPosition = 60; //★を文字列変数に1個ずつ追加するループ文 for(int i=0; i<10; i++){ star = star + "★"; } //10個の★マークをアプレット上に描画する g.drawString(star, xPosition, yPosition); } } これを実行すると、(10, 60)の位置から右側に10個星が表示されるのですが、 なぜ「右側」に続けて表示されるのかがわかりません。 今までは、例えばg.drawOval(10+i*10、10+i*10, 20, 20)とかで、 i=i+1であればxもyも変化するのでわかるんですが、 この式は全くそういうことも書いておらず、それなのにx位置だけ 自動的に変わった位置で星がどんどん増えていくんですよね。 この式の中のxPositionもyPositionも、iに関連付けされていないようですが、 そのため、iが0でも3でもx位置とy位置は同じように見えてしまうのです。 説明がへたくそで申し訳ありませんが、どなたか理由を説明していただけないでしょうか。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • シンボルが解決できません

    import java.applet.*; import java.awt.*; public class keiin extends Applet implements Runnable { int narabi[]=new int[10]; public void init(){ } public void start() { } public void paint(Graphics g) { for (int i=0; i==kun+1; i++) { g.drawString(narabi[i],i*30,30); } } public void run() { repaint(); num++; } } public void update(Graphics g) { paint(g); } } というプログラムを作っていて、javacでコンパイルすると、 「C:\Documents and Settings\Administrator\My Documents\ycworks\java\keirin\0.01\keiin.java:49:シンボルを解決できません。 シンボル:メソッド drawstring(int,int,int) 場所:java.awt.Graphicsのクラス g.drawString(narabi[i],i*30,30); ^ と出て、コンパイルされません。 Javacのある場所を環境変数に登録してコンパイルしてみたり、配列変数がおかしいのかと思い、narabi[i]を文字列(g.drawstring("hoge",50,30);)にしたり、試してみたのですが、効果なしです。 解決方法を教えてください

  • Java Applet での虫食い算での質問

    初めて利用させていただきます。 今、課題で虫食い算のプログラムを作成しているのですが、うまく動作してくれません。 もしよろしければご指摘をしてもらえればと思い書き込みのほうをさせていただきます。 import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Event; import java.awt.Font; import java.awt.Graphics; import java.awt.Panel; import java.applet.Applet; public class musikuizan_1 extends Applet { int A, B; int cnt; int sub(int n,int m) { int i; for (i=1; i<m; i++) n /= 10; return n % 10; } void puzzle() { int a; int b; int c; int d; int e; for (a=1; a<=99; a++) { for (b=1; b<=99; b++) { c = a * (b % 10); d = a * (b / 10); e = a * b; if (c>=100 && c<=999 && d>=10 && d<=99 && e>=100 && e<=999) /*桁数調整*/ { if (sub(b,1)==3 && sub(c,2)==1 && sub(d,2)==8) /*穴埋めされてある部分の数*/ { A = a; B = b; cnt++; } } } } } public void init() { setBackground(new Color(150,180,200)); setLayout(new BorderLayout()); Panel psouth = new Panel(); psouth.add(new Button("実行")); add("South", psouth); } public void paint(Graphics g) { int i, c, d, e; for (i=1; i<=2; i++) { g.drawRect(97-i*20, 5,16,16); g.drawRect(97-i*20,25,16,16); g.drawRect(77-i*20,65,16,16); } for (i=1; i<=3; i++) { g.drawRect(97-i*20,45,16,16); g.drawRect(97-i*20,85,16,16); } for (i=1; i<=4; i++) g.drawLine(30,43,100,43); g.drawLine(30,83,100,83); g.setFont(new Font("Helvetica",Font.BOLD,18)); g.drawString("x",40, 40); if (A == 0) { g.drawString("3",60, 40); g.drawString("1",60, 60); g.drawString("8",60, 80); g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString("cnt = ",30,115); } else { c = A * (B % 10); d = A * (B / 10); e = A * B; g.setFont(new Font("Helvetica",Font.BOLD,18)); for (i=1; i<=2; i++) { g.drawString(Integer.toString(sub(A,i)),100-i*20, 20); g.drawString(Integer.toString(sub(B,i)),100-i*20, 40); } for (i=1; i<=3; i++) { g.drawString(Integer.toString(sub(c,i)),100-i*20, 60); g.drawString(Integer.toString(sub(d,i)), 80-i*20, 80); } for (i=1; i<=4; i++) g.drawString(Integer.toString(sub(e,i)),100-i*20,100); g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString("cnt = "+Integer.toString(cnt),30,115); } } public boolean action(Event e, Object arg) { if ("実行".equals(arg)) { if (A == 0) puzzle(); else A = cnt = 0; repaint(); } return true; } }

    • ベストアンサー
    • Java
  • 文字列の表示

    Graph2クラスで作った文字と直線をMainFrameクラスで作ったフレームに表示させたいのですが、フレームが作成されるだけで文字と直線が表示されません。どうすれば表示されるのか是非教えてください。お願いします。 import java.awt.*; import java.awt.event.*; import javax.swing.*; class Graph1 { public static void main(String argv[]) { MainFrame MF = new MainFrame(); MF.setVisible(true); } } class MainFrame extends Frame { public MainFrame() { setLocation(500 , 200); setTitle("MainFrame"); setSize(500 , 300); setLayout(null); //Graph2 aGraph2 = new Graph2(); //aGraph2.show(); addWindowListener(new MyWinL()); } private class MyWinL extends WindowAdapter { public void windowClosing(WindowEvent e) { System.out.println("終了しました。\n"); System.exit(0); } } } class Graph2 extends JApplet { public void paint(Graphics g) { g.setColor(Color.GRAY); for (int i=0; i < 5; i++) { g.drawLine(0, 50*i, 400, 50*i); } for (int i=0; i < 9; i++) { g.drawLine(50*i, 0, 50*i, 200); } Font font1 = new Font("Serif" , Font.PLAIN,30); Font font2 = new Font("SansSerif" , Font.PLAIN,30); Font font3 = new Font("MS P明朝" , Font.PLAIN,30); Font font4 = new Font("MS Pゴシック" , Font.PLAIN,30); g.setColor(Color.RED); g.setFont(font1); g.drawString("Hello! Java world!", 50, 50); g.setFont(font2); g.drawString("Hello! Java world!", 50, 100); g.setColor(Color.BLUE); g.setFont(font3); g.drawString("Hello! Java world!", 50, 150); g.setFont(font4); g.drawString("Hello! Java world!", 50, 200); }; }

    • ベストアンサー
    • Java
  • 画像がうまく表示されません

    下のプログラムを実行すると、 最初の読みこみはうまくいくのですが、(一部出なくなる画像がありますが…) Internet Explorerの更新ボタンを押した時、 (1)の部分で止まってしまうようで、画像が表示されなくなります。 (ローカルドライブで実行した場合はうまく表示できるのですが、ネットワークで実行した場合にこのようになってしまいます) import java.applet.Applet; import java.awt.*; public class met extends Applet{ Image img[] = new Image[6]; MediaTracker mt; public void init(){ mt = new MediaTracker(this); for(int i = 0;i < 6;i++){ img[i] = getImage(getCodeBase(),i+".gif"); mt.addImage(img[i],0); } try{ mt.waitForID(0); }catch(InterruptedException e){} } public void paint(Graphics g){ // (1) if(!mt.checkID(0)){ g.clearRect(0,0,500,500); g.drawString("読み込み中",200,240); return; } g.setColor(Color.white); g.fillRect(0,0,500,500); for(int i = 0;i < 6;i++){ g.drawImage(img[i],i*50,0,this); } } }

    • ベストアンサー
    • Java
  • 平均値の出し方

    お世話になります。 Javaのアプレットを使ったプログラムを作成しているのですが、 どうしても表示がおかしくなってしまうのでお助けいただきたいのです。 まず、乱数で数字を10個表示させ、 その下にその平均値を出すというプログラムなのですが、 肝心の平均値が黒い四角で出てきてしまって 平均値が全く読めません(というか数字じゃない)。 エラーも出ていないので、どこがおかしいのかわからないのです。 なお、プログラムは以下のとおりです。 import java.awt.*; import java.applet.*; public class Average extends Applet{ public void paint(Graphics g){ int [] numbers = new int [10]; for (int i=0; i<numbers.length; i++){ numbers[i] = (int)(Math.random()*12+1); g.drawString(""+numbers[i], 30+30*i, 30); } int sum=0; int average; for (int i=0; i<numbers.length; i++){ sum = sum + numbers[i]; average = sum/10; g.drawString("平均値は,"+average, 30, 60); } } } まず適当に乱数で数字を10個表示し、 合計(sum)をとりあえず0としておいて、 合計に乱数の変数numbers[i]を10回足していくというつもりで書きました。 どなたかご教授いただけると助かります。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • 色が変わる文字について

    javaの初心者です。 環境OSWindows2000 使用ソフトjavaBuilder5です。 今回入門書を見ながら作ったのですが、 (写したが正しいかな?) 実行すると文字の後ろの色がグレーになります。 これを変更する方法を教えてください 黒とか赤とかに変更したいのです。 ーーーソースーーー import java.applet.Applet; import java.awt.*; import java.lang.*; public class TopTitle extends Applet implements Runnable{ Thread th=null; String msg="",cen="",def="",aft=""; int no,width,wait; public void init(){ msg=getParameter("MESSAGE"); msg=" "+msg+" "; no=msg.length(); wait=Integer.parseInt(getParameter("WAIT")); } public void update(Graphics g){ paint(g); } public void paint(Graphics g){ Font f=new Font("TimesRoman",Font.BOLD,48); FontMetrics fm=getFontMetrics(f); g.setFont(f); int width=fm.stringWidth(def); g.setColor(new Color(0,0,255)); g.drawString(msg,0,48); g.setColor(new Color(125,125,125)); g.drawString(cen,width,48); } public void start(){ if (th==null){ th=new Thread(this); th.start(); } } public void run(){ int i; while (true){ try{ for(i=0;i<no-1;i++){ def=msg.substring(0,i); cen=msg.substring(i,i+1); th.sleep(1000); repaint(); } th.sleep(wait); } catch(InterruptedException e){} } } public void stop(){ if(th!=null){ th.stop(); th=null; } } }

    • ベストアンサー
    • Java
  • Javaで四角をつくったのですが・・・

    とりあえずこの文をみてください。 import java.applet.Applet; import java.awt.*; public class Face extends Applet { public final static int step = 2; public final static int x0rg = 10; public final static int y0rg = 20; public void paint(Graphics g){ for(int i = 0; i < 3; i++) { for(int j = 0; j < 1; j++) { drawFace(g, x0rg + 18 * step * i, y0rg + 18 * step * j); } } drawFace(g, x0rg, y0rg); } void drawFace(Graphics g, int xStart, int yStart) { drawFrame(g, xStart, yStart); } void drawFrame(Graphics g, int xStart, int yStart) { g.drawRect(xStart, yStart, 16 * step, 16 * step); } } とこのような命令で四角を作ったとき、四角が三つ表示されるのですが、ここから一つ目(一番左の四角)の四角の二倍の大きさの箱を二つ目の四角に、さらに三つ目の四角はその二倍にしたいのですがどのようにすればできるのでしょうか?ようするに右にいくごとに二倍にしていきたいのです。 どうかお願いします。

    • ベストアンサー
    • Java
  • Javaアプレットについてですが

    Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。 ソースは下の通りです。 変更しなければいけないところがあるならお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample7 extends Applet implements Runnable, ActionListener { Button bt; int num; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); Thread th; th = new Thread(this); th.start(); } public void actionPerformed(ActionEvent ae) { public void run() { try{ for(int i=0; i<11; i++){ num = i; repaint(); Thread.sleep(1000); } } catch(InterruptedException e){} } } public void paint(Graphics g) { String str = num + "です。"; g.drawString(str, 50, 50); } }

    • ベストアンサー
    • Java
  • クリックして頂点を線で結ぶ

     マウスでクリックした点から点まで順々に線でつなげる(二回目のクリックで線一本がひける。)プログラムを組んでいるのですが、配列を使う以外の方法を探しています。どなたかいい方法があればご紹介ください。  ちなみに配列を使ったプログラムを以下に載せます。 import java.applet.*; import java.awt.Graphics; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; public class tyouten extends Applet implements MouseListener{ int i=0,j=0; int[] xx=new int[100]; int[] yy=new int[100]; public void init(){ addMouseListener(this); } public void mouseClicked(MouseEvent e){ xx[i]=e.getX(); yy[i]=e.getY(); if(i<99) i++; if(i>0)repaint(); } public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void paint(Graphics g){ for (j=0;j<i-1;++j) g.drawLine(xx[j],yy[j],xx[j+1],yy[j+1]); for(j=0;j<i;++j) g.drawOval(xx[j]-1,yy[j]-1,2,2); } }

    • ベストアンサー
    • Java