ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

D$N団コミュのプログラミングの神のスレ

  • mixiチェック
  • このエントリーをはてなブックマークに追加

コメント(42)

public class CoordinateScore{
public int getSumOfScore(int x,int y){
int ans=0;
Circle c[] = {new Circle(0,0,5),
new Circle(3,0,2),
new Circle(-2,0,3),
new Circle(3,3,3),
};
for(int i=0;i<c.length;i++)ans+=c[i].getScore(x,y);
return ans;
}
}

class Circle{
int xx; //円の中心のx座標
int yy; //円の中心のy座標
int rr; //円の半径の長さ
public Circle(int x,int y,int r){
xx=x;
yy=y;
rr=r;
}
public int getScore(int x,int y){
//x,yで示される座標が円の内側にあるときは2,円周上にあるときは1,円の外側にある場合は0を返すメソッド。
int l=(xx-x)*(xx-x)+(yy-y)*(yy-y);
int h=0;
if(l<rr*rr)h=2;
if(l==rr*rr)h=1;
if(l>rr*rr)h=0;
return h;
}
}



へいお待ち!>angsn、マスター
import java.io.*;
import java.util.*;

/**
* @author 筧 捷彦
* @date 2006-10-30
*/

/** ファイルの単語を調べる */
class Main{
/**
* “java Main ファイル名”と実行時引数で調べたいファイルを
* 指定する。結果として,そのファイルに現れたすべての単語と
* その出現回数が出力される。単語は,辞書順に出力される。
*/
public static void main(String[] args){
//単語表を用意する
TreeMap<String,Integer> map= new TreeMap<String,Integer>();
try{
FileReader fr= new FileReader(args[0]);
BufferedReader br= new BufferedReader(fr);
String line;
while( (line= br.readLine())!=null ){
StringTokenizer st= new StringTokenizer(line," , (, \", ), ...));, .75), 1.2, =,: ,V>",false);
while( st.hasMoreTokens() ){
String word= st.nextToken();
//切り出した単語を単語表に追加する;
if( map.containsKey(word) )
map.put(word, map.get(word)+1);
else
map.put(word, 1);
}
}
br.close(); fr.close();
}catch(Exception ex){
System.out.println(""+ex.getClass().getSimpleName());
}
//単語帳に記録された単語を順に書き出す;
for(Iterator<String> it= map.keySet().iterator(); it.hasNext();){
String word= it.next();
System.out.printf("%5d %s%n", map.get(word), word);
}
}
}

一応できたっぽいかもしれないけど
StringTokenizer st= new StringTokenizer(line," , (, \", ), ...));, .75), 1.2, =,: ,V>",false);
のとこかえただけでなんか汚いけど一応のせときまっする
>7
?クスw
今から、考えてみまっする
/*TreeMapクラス,Collection<E>インターフェースの登録されているパッケージ*/
import java.util.*;
/*FileReader,BufferedReaderクラスの登録されているパッケージ*/
import java.io.*;
class main{
public static void main(String[] args){
TreeMap<String,Integer> map=new TreeMap<String,Integer>();
try{
FileReader fr= new FileReader(args[0]);
/*txt内の文字すべてを読み込ませる*/
BufferedReader br= new BufferedReader(fr);
String line;
/*改行がなくなる行、つまり最後の行までwhile文を実行する*/
while((line=br.readLine())!=null){
/*
* split(String regex)メソッドを使うことで正規表現regexに一致する位置で分割する
* [a-zA-Z]でaからz,AからZまでの文字を意味する.^を先頭につけることでその否定を表す
* 配列wordに分割した単語を入れていく
*/
String[] word=line.split("[^a-zA-Z]");
for(int h=0; h<word.length; h++){
/*
* word[h]が未登録キーでなければ値を1増やす
* 未登録であればキーを登録し値を1とする
*/
if(map.containsKey(word[h])) map.put(word[h],map.get(word[h])+1);
else map.put(word[h],1);
}
}
br.close();fr.close();
}catch(Exception ex){
System.out.println(""+ex.getClass().getSimpleName());}
/*
* map.keySet()で登録されている鍵の集合を意味する
* iterator()メソッドによってその集合をIterator<E>インターフェースで扱えるオブジェクトを得る
*/
for(Iterator<String> it=map.keySet().iterator();it.hasNext();){
String word=it.next();
/*Iteratorによってアルファベット順に並んだ単語をwordに修め、TreeMapに登録されたその単語の値を返す*/
System.out.printf("%5d %s%n",map.get(word),word);
}
}
}
まず、Mainからね。


import java.text.*;
import java.util.*;
class Main{
public static void main(String[] args){
CFrame cf1= new CFrame();
cf1.setLocation(0,0);
CFrame cf2= new CFrame();
cf2.setLocation(100,100);
CFrame cf3= new CFrame();
cf3.setLocation(200,200);

while(true){
if(cf1.button1){
cf1.repaint();}
if(cf2.button1){
cf2.repaint();}
if(cf3.button1){
cf3.repaint();}
try{
Thread.sleep(500);
}catch(InterruptedException e){}
}
}
}



次、CFrameね。



import java.awt.*;
import java.awt.event.*;
/**
* @author 筧 捷彦
*
*/
/** 時計板 */
class CFrame extends AFrame {
ClockPanel clock;
static int number = 1;
Boolean button1=true;
public CFrame(){
/*-- 時計版の部品構成 --*/
setTitle("clock"+number); setSize(200,120);
Button a = new Button("start");
Button b = new Button("stop");
Panel p=new Panel();
clock= new ClockPanel();

p.setLayout(new GridLayout(1,2));
p.add(a);p.add(b);
add(clock);
add(p, BorderLayout.SOUTH);
a.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
button1=true;}
});
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
button1=false;}
});
setVisible(true);number++;
}
public void repaint(){
super.repaint();
clock.repaint();
}
}


他に良いの出来ればうpよろしく。
動き遅せぇけど、一応載せとくね。
イジったのはMainだけだったと思うんで。


/** ボールの等速運動
* ボールの個数は,実行指令の引数で指定することができる。
* (引数を書かなければ,ボールは1個だけとなる。)
*/
class Main{
public static void main(String[] args){
int n= 1;
if( args.length > 0 ) n= Integer.parseInt(args[0]);
Ball[] b = new Ball[n];
BFrame bf= new BFrame(300,200);
for(int i= 0; i!=n; i++){
b[i] = new Ball(bf);
}
while(true){
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(Math.sqrt((b[i].x-b[j].x)*(b[i].x-b[j].x)+(b[i].y-b[j].y)*(b[i].y-b[j].y))<b[i].r){
Clash(b[i],b[j]);
}
}
}
}
}
public static void Clash(Ball a,Ball b){
double tmp;
tmp=a.dx;
a.dx=b.dx;
b.dx=tmp;
tmp=a.dx;
a.dy=b.dy;
b.dy=tmp;
}
}
相変わらず動き遅せぇけど、上の改良版です。
ボールの半径がバラバラになって、質量なんかも考えてあります。

じゃあ、Mainから。

/** ボールの等速運動
* ボールの個数は,実行指令の引数で指定することができる。
* (引数を書かなければ,ボールは1個だけとなる。)
*/
class Main{
public static void main(String[] args){
int n= 1;
if( args.length > 0 ) n= Integer.parseInt(args[0]);
Ball[] b = new Ball[n];
BFrame bf= new BFrame(300,200);
for(int i= 0; i!=n; i++){
b[i] = new Ball(bf);
}
while(true){
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
double r;
if(b[i].r > b[j].r){r=b[i].r;}
else{r=b[j].r;}
if(Math.sqrt((b[i].x-b[j].x)*(b[i].x-b[j].x)+(b[i].y-b[j].y)*(b[i].y-b[j].y))<r){
Clash(b[i],b[j]);
}
}
}
}
}
public static void Clash(Ball a,Ball b){
double tmp1,tmp2;
tmp1=a.dx;
tmp2=b.dx;
a.dx=((a.m-b.m)*tmp1+2*b.m*tmp2)/(a.m+b.m);
b.dx=(2*a.m*tmp1+(b.m-a.m)*tmp2)/(a.m+b.m);
tmp1=a.dy;
tmp2=b.dy;
a.dy=((a.m-b.m)*tmp1+2*b.m*tmp2)/(a.m+b.m);;
b.dy=(2*a.m*tmp1+(b.m-a.m)*tmp2)/(a.m+b.m);
}
}



次、Ballね。


import java.awt.*;
/** Ball: BFrameの画面の中に存在するオブジェクトのクラスの一つ
* 等速運動を行い,壁面では減衰を受けながらも鏡面反射を行う。
* 速度がほとんど0に近づくときえてしまう。
* 初期位置・初期速度は,乱数で決める。
*/
class Ball extends Thread implements Paintable {
boolean active;
BFrame frame;
int width, height;
double r; Color c;
double x,y, dx,dy;
double density = 1.0; /*面積密度*/
double m;/*質量*/
public Ball(BFrame bf){
frame= bf;
width= frame.getCVWidth(); height= frame.getCVHeight();
c= Color.blue; r= random(20,10);
m = gravity(r);
x= random(0, width); dx= random(-10,10);
y= random(0, height); dy= random(-10,10);
active= true; start(); frame.add(this);
}
private double random(int l, int u){
return Math.random()*(u-l) +l;
}
public void run(){
while( active ){
final double eps= 1.0; /* 減衰率 */
x+= dx;
if( x < r ){ x= 2*r-x; dx*= -eps; dy*= eps;}
if( x > width-r ){ x= 2*(width-r)-x; dx*= -eps; dy*= eps; }
y+= dy;
if( y < r ){ y= 2*r-y; dy*= -eps; dx*= eps; }
if( y > height-r ){ y= 2*(height-r)-y; dy*= -eps; dx*= eps; }
if( Math.sqrt(dx*dx+dy*dy) < 0.5 ){ kill(); frame.remove(this); }
try{ Thread.sleep(40); }catch(InterruptedException e){}
}
}
public void kill(){ active= false; }
public void paint(Graphics g){
g.setColor(c);
g.fillOval((int)x-(int)r, (int)y-(int)r, 2*(int)r, 2*(int)r);
}
public double gravity(double r){
double grv = r*r*3.14;
return grv;
}
}



重いんで、実行するときはボールを3つくらいにするといいよ。
import java.io.*;
import java.util.*;
class Main10{
public static void main(String[] args){
try{
FileReader fr= new FileReader(args[0]);
BufferedReader br= new BufferedReader(fr);
String line;
int lc= 0;//行数
int sp =0;//空白
int bm =0;//大文字
int sm =0;//小文字
int num =0;//数字
int kg =0;//記号
TreeMap<Character, Integer> counts1 = new TreeMap<Character, Integer>();
while( (line= br.readLine())!=null ){
lc++;
for(int i= 0; i!=line.length(); i++){
Character c= line.charAt(i); // line の i 番目の文字
if(Character.isSpaceChar(c)) sp++;
else if(Character.isUpperCase(c)) bm++;
else if(Character.isLowerCase(c)) sm++;
else if(Character.isDigit(c)) num++;
else kg++;
if( counts1.containsKey(c) )
counts1.put(c, counts1.get(c)+1);
else
counts1.put(c, 1);
}
}
br.close(); fr.close();
int max=0;
int d = 0;
for(Iterator<Character> it= counts1.keySet().iterator(); it.hasNext();){
Character word= it.next();
if(counts1.get(word)>max){
max=counts1.get(word);
}
}
d=max/120;
for( Character c: counts1.keySet() ){
System.out.print(c +": "+ counts1.get(c));
for(int i =0;i<counts1.get(c)/d;i++){
System.out.print("*");
}
System.out.println("");
}
System.out.println("空白:"+sp);
System.out.println("改行:"+(lc-1));
System.out.println("大文字:"+bm);
System.out.println("小文字:"+sm);
System.out.println("全英字:"+(bm+sm));
System.out.println("数字:"+num);
System.out.println("記号:"+kg);
}catch(Exception ex){
System.out.println(ex.getClass().getSimpleName());
}
}
}


とりあえずっていうかんじで!!
>7
ナイス!!!!!!!!!!!!!!!
フレーム上で動いて、ファイルも参照できるお^^
じゃあ、Mainからね

import java.awt.*;
class Main{
public static void main(String[] args){
CFrame fr= new CFrame();
}
}


CFrameで〜す。

import base.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

class CFrame extends AFrame implements ActionListener {
Button toCount= new Button("count");
Label result= new Label("テキストファイルに含まれる文字数をカウントします。");
TextArea wordList= new TextArea(10,20);
public CFrame(){
setTitle("counting on a charactor"); setSize(350,500);
setLayout(new FlowLayout());
add(toCount);
toCount.addActionListener(this);
add(result);
add(wordList);
setVisible(true);
}
/**
* ボタンが押されたときにアプリケーションが起こす実動作
*/
public void actionPerformed(ActionEvent e){
/** 「ファイルを開く」ダイアローグ */
FileDialog dialog= new FileDialog(this);
dialog.setVisible(true);
/** ダイアローグを明示して,ファイル名が指定されるのを待つ */
String fileName= dialog.getFile();
/** 名前が具体的に与えられときだけ動作する */
if( fileName!=null )
try{
FileReader fr= new FileReader(fileName);
BufferedReader br= new BufferedReader(fr);
String line;
int lc= 0;//行数
int sp =0;//空白
int bm =0;//大文字
int sm =0;//小文字
int num =0;//数字
int kg =0;//記号
TreeMap<Character, Integer> counts1 = new TreeMap<Character, Integer>();
while( (line= br.readLine())!=null ){
lc++;
for(int i= 0; i!=line.length(); i++){
Character c= line.charAt(i); // line の i 番目の文字
if(Character.isSpaceChar(c)) sp++;
else if(Character.isUpperCase(c)) bm++;
else if(Character.isLowerCase(c)) sm++;
else if(Character.isDigit(c)) num++;
else kg++;
if( counts1.containsKey(c) )
counts1.put(c, counts1.get(c)+1);
else
counts1.put(c, 1);
}
}
br.close(); fr.close();
int max=0;
int d = 0;
for(Iterator<Character> it= counts1.keySet().iterator(); it.hasNext();){
Character word= it.next();
if(counts1.get(word)>max){
max=counts1.get(word);
}
}
d=max/120;
for( Character c: counts1.keySet() ){
wordList.append(c +": "+ counts1.get(c));
for(int i =0;i<counts1.get(c)/30;i++){
wordList.append("*\n");
}
wordList.append("\n");
}
wordList.append("空白:"+sp+"\n");
wordList.append("改行:"+(lc-1)+"\n");
wordList.append("大文字:"+bm+"\n");
wordList.append("小文字:"+sm+"\n");
wordList.append("全英字:"+(bm+sm)+"\n");
wordList.append("数字:"+num+"\n");
wordList.append("記号:"+kg+"\n");
}catch(Exception ex){
result.setText(""+ex.getClass().getSimpleName());
}
}
}
漢字が記号に含まれてるので考えます。。
import base.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

class CFrame extends AFrame implements ActionListener {
Button load = new Button("Load");
public CFrame(){
setTitle("load"); setSize(100,100);
setLayout(new FlowLayout());
add(load);
load.addActionListener(this);
setVisible(true);
}
/**
* ボタンが押されたときにアプリケーションが起こす実動作
*/
public void actionPerformed(ActionEvent e){
/** 「ファイルを開く」ダイアローグ */
FileDialog dialog= new FileDialog(this);
dialog.setVisible(true);
/** ダイアローグを明示して,ファイル名が指定されるのを待つ */
String fileName = dialog.getFile();
String directory = dialog.getDirectory();
/** 名前が具体的に与えられときだけ動作する */
if( fileName!=null )
try{
FileReader fr= new FileReader(directory+fileName);
BufferedReader br= new BufferedReader(fr);
String line;
int lc= 0;//行数
int sp =0;//空白
int bm =0;//大文字
int sm =0;//小文字
int num =0;//数字
int kg =0;//記号
TreeMap<Character, Integer> counts1 = new TreeMap<Character, Integer>();
while( (line= br.readLine())!=null ){
lc++;
for(int i= 0; i!=line.length(); i++){
Character c= line.charAt(i); // line の i 番目の文字
if(Character.isSpaceChar(c)) sp++;
else if(Character.isUpperCase(c)) bm++;
else if(Character.isLowerCase(c)) sm++;
else if(Character.isDigit(c)) num++;
else kg++;
if( counts1.containsKey(c) )
counts1.put(c, counts1.get(c)+1);
else
counts1.put(c, 1);
}
}
br.close(); fr.close();
int max=0;
int d = 0;
for(Iterator<Character> it= counts1.keySet().iterator(); it.hasNext();){
Character word= it.next();
if(counts1.get(word)>max){
max=counts1.get(word);
}
}
d=max/120;
for( Character c: counts1.keySet() ){
System.out.print(c +": "+ counts1.get(c));
for(int i =0;i<counts1.get(c)/d;i++){
System.out.print("*");
}
System.out.println("");
}
System.out.println("空白:"+sp);
System.out.println("改行:"+(lc-1));
System.out.println("大文字:"+bm);
System.out.println("小文字:"+sm);
System.out.println("全英字:"+(bm+sm));
System.out.println("数字:"+num);
System.out.println("記号:"+kg);
}catch(Exception ex){
System.out.println(ex.getClass().getSimpleName());
}
}
}


ディレクトリ名入れたほうがいいんだよ!!
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

class CFrame extends AFrame implements ActionListener {
Button load = new Button("Load");
Label label = new Label("テキストファイルを読み込んでそこに含まれる文字をカウントします。");
public CFrame(){
setTitle("load"); setSize(500,70);
setLayout(new FlowLayout());
add(load); add(label);
load.addActionListener(this);
setVisible(true);
}
/**
* ボタンが押されたときにアプリケーションが起こす実動作
*/
public void actionPerformed(ActionEvent e){
/** 「ファイルを開く」ダイアローグ */
FileDialog dialog= new FileDialog(this);
dialog.setVisible(true);
/** ダイアローグを明示して,ファイル名が指定されるのを待つ */
String fileName = dialog.getFile();
String directory = dialog.getDirectory();
/** 名前が具体的に与えられときだけ動作する */
if( fileName!=null )
try{
FileReader fr= new FileReader(directory+fileName);
BufferedReader br= new BufferedReader(fr);
String line;
int lc= 0;//改行
int sp =0;//空白
int bm =0;//大文字
int sm =0;//小文字
int num =0;//数字
int kg =0;//記号
TreeMap<Character, Integer> counts1 = new TreeMap<Character, Integer>();
while( (line= br.readLine())!=null ){
lc++;
for(int i= 0; i!=line.length(); i++){
Character c= line.charAt(i); // line の i 番目の文字
if(Character.isSpaceChar(c)) sp++;
else if(Character.isUpperCase(c)) bm++;
else if(Character.isLowerCase(c)) sm++;
else if(Character.isDigit(c)) num++;
else kg++;
if( counts1.containsKey(c) )
counts1.put(c, counts1.get(c)+1);
else
counts1.put(c, 1);
}
}
br.close(); fr.close();
int max=0;
int d = 0;
for(Iterator<Character> it= counts1.keySet().iterator(); it.hasNext();){
Character word= it.next();
if(counts1.get(word)>max){
max=counts1.get(word);
}
}
if(max>120) d = (max+70)/120;
else d=1;
for( Character c: counts1.keySet() ){
System.out.print(c +": "+ counts1.get(c));
for(int i =0;i<counts1.get(c)/d;i++){
System.out.print("*");
}
System.out.println("");
}
System.out.println("空白:"+sp);
System.out.println("改行:"+(lc-1));
System.out.println("大文字:"+bm);
System.out.println("小文字:"+sm);
System.out.println("全英字:"+(bm+sm));
System.out.println("数字:"+num);
System.out.println("記号:"+kg);
}catch(Exception ex){
System.out.println(ex.getClass().getSimpleName());
}
}
}
改良しますた少しだけ
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
class ss extends Frame implements ActionListener{
Button toCount= new Button("count");
int size=0;
int fff=15;
int width=1200;
int max=0;
TreeMap<String,Integer> map=new TreeMap<String,Integer>();
public ss(){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}});
setTitle("counter"); setSize(300,100);
setLayout(new FlowLayout());
add(toCount);
toCount.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
FileDialog dialog= new FileDialog(this);
dialog.setVisible(true);
String fileName= dialog.getFile();
if( fileName!=null )
try{
BufferedReader br= new BufferedReader(new FileReader(fileName));
String line;
while( (line= br.readLine())!=null || line.length() == 0 || "".equals(line)){
String line2=line.toLowerCase();
String[] word=line2.split("[^a-z]+|\\B");
for(int h=0; h<word.length; h++){
if(map.containsKey(word[h])) map.put(word[h],map.get(word[h])+1);
else map.put(word[h],1);
}
}
br.close();
}catch(Exception ex){
System.out.println(""+ex.getClass().getSimpleName());}
for(Iterator<String> it=map.keySet().iterator();it.hasNext();){
size++;
String word=it.next();
if(map.get(word)>max) max=map.get(word);
}
Canvas canvas= new Canvas(){
public void paint(Graphics g){
g.setColor(Color.white);
g.fillRect(0,0, width,111+size*fff);
g.setColor(Color.black);
g.setFont(new Font("fontname",Font.BOLD, fff));
int y=fff;
for(Iterator<String> it=map.keySet().iterator();it.hasNext();){
String word=it.next();
g.drawString(word,44,y);
g.drawString(map.get(word).toString(),66,y);
String s="*";
if(max<170) for(int i=1;i<map.get(word);i++)s+="*";
else for(int i=1;i<map.get(word)*170/max;i++)s+="*";
g.drawString(s,99,y);
/*g.drawLine(88, y-fff/2 ,88+map.get(word)*(width-222)/max ,+y-fff/2); */
y+=fff;
}
}
};
setTitle("graph"); setSize(width,111+size*fff);
canvas.setSize(width,111+size*fff);
setLayout(new FlowLayout());
add(canvas);
remove(toCount);
setVisible(true);
}
}



結果の一番上に空白の文字が出てきてまう
どこがダメなんだーーー

Main


import java.awt.*;
class Main{
public static void main(String[] args){
CFrame fr= new CFrame();
}
}



CFrame


import base.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;


class CFrame extends AFrame implements ActionListener {
Graphics g;
Canvas canvas;
int[] kazu = new int[100];
int tate = 8;
Button toCount= new Button("count");
Label result= new Label("テキストファイルに含まれる文字数をカウントします。");
TextArea wordList= new TextArea(30,10);
public CFrame(){
Calculation(kazu);
canvas= new Canvas(){
public void paint(Graphics g){
tate = 0;
for(int j=0;j<10;j++){
g.fillRect(0,tate,kazu[j],5);
tate=tate+12;}
}
};
canvas.setSize(100,455);
setTitle("counting on a charactor"); setSize(350,600);
setLayout(new FlowLayout());
add(toCount);
toCount.addActionListener(this);
add(result);
add(wordList);add(canvas);
setVisible(true);
}
/**
* ボタンが押されたときにアプリケーションが起こす実動作
*/
public void actionPerformed(ActionEvent e){
/** 「ファイルを開く」ダイアローグ */
FileDialog dialog= new FileDialog(this);
dialog.setVisible(true);
/** ダイアローグを明示して,ファイル名が指定されるのを待つ */
String fileName= dialog.getFile();
/** 名前が具体的に与えられときだけ動作する */
if( fileName!=null )
try{
FileReader fr= new FileReader(fileName);
BufferedReader br= new BufferedReader(fr);
String line;
int lc= 0;//行数
int sp =0;//空白
int bm =0;//大文字
int sm =0;//小文字
int num =0;//数字
int kg =0;//記号
TreeMap<Character, Integer> counts1 = new TreeMap<Character, Integer>();
while( (line= br.readLine())!=null ){
lc++;
for(int i= 0; i!=line.length(); i++){
Character c= line.charAt(i); // line の i 番目の文字
if(Character.isSpaceChar(c)) sp++;
else if(Character.isUpperCase(c)) bm++;
else if(Character.isLowerCase(c)) sm++;
else if(Character.isDigit(c)) num++;
else kg++;
if( counts1.containsKey(c) )
counts1.put(c, counts1.get(c)+1);
else
counts1.put(c, 1);
}
}
br.close(); fr.close();
int max=0;
int d = 0;
kazu = new int[sm];
for(Iterator<Character> it= counts1.keySet().iterator(); it.hasNext();){
int i = 0;
Character word= it.next();
kazu[i]=counts1.get(word);
if(counts1.get(word)>max){
max=counts1.get(word);
}
i++;
}
d=max/120;
for( Character c: counts1.keySet() ){
wordList.append(c +": "+ counts1.get(c));
for(int i =0;i<counts1.get(c)/30;i++){
wordList.append("*");
}
wordList.append("\n");
}
wordList.append("空白:"+sp+"\n");
wordList.append("改行:"+(lc-1)+"\n");
wordList.append("大文字:"+bm+"\n");
wordList.append("小文字:"+sm+"\n");
wordList.append("全英字:"+(bm+sm)+"\n");
wordList.append("数字:"+num+"\n");
wordList.append("記号:"+kg+"\n");
}catch(Exception ex){
result.setText(""+ex.getClass().getSimpleName());
}
}
public void Calculation(int[] kazu){
FileDialog dialog= new FileDialog(this);
dialog.setVisible(true);
/** ダイアローグを明示して,ファイル名が指定されるのを待つ */
String fileName= dialog.getFile();
/** 名前が具体的に与えられときだけ動作する */
if( fileName!=null )
try{
FileReader fr= new FileReader(fileName);
BufferedReader br= new BufferedReader(fr);
String line;
TreeMap<Character, Integer> counts1 = new TreeMap<Character, Integer>();
while( (line= br.readLine())!=null ){
for(int i= 0; i!=line.length(); i++){
Character c= line.charAt(i); // line の i 番目の文字
if(Character.isLowerCase(c))
if( counts1.containsKey(c) )
counts1.put(c, counts1.get(c)+1);
else
counts1.put(c, 1);
}
}
br.close(); fr.close();
for(Iterator<Character> it= counts1.keySet().iterator(); it.hasNext();){
int i = 0;
Character word= it.next();
kazu[i]=counts1.get(word);
i++;
}
}
catch(Exception ex){
result.setText(""+ex.getClass().getSimpleName());
}

}
}
電卓途中経過・・・
とりあえず、見かけは大体おkかな。
メモリとかはないけど。必要になったら足せると思われ。
ボタン押すとその文字が表示されます。


import java.awt.*;
import java.util.*;
import javax.swing.JTextField;
import java.awt.event.*;

public class CalcPanel extends Panel implements ActionListener{
JTextField hyouji = new JTextField(12);
public CalcPanel() {
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints(); // the default setting

setFont(new Font("SansSerif", Font.PLAIN, 14));
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 4;
c.gridheight = 1;


gridbag.setConstraints(hyouji, c);
add(hyouji);


c.gridwidth = 1;
c.gridy = 1;
c.weightx = 1.0;
makebutton("×", gridbag, c);
c.gridx = 1;
makebutton("÷", gridbag, c);
c.gridx = 2;
makebutton("±", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("C", gridbag, c);

c.gridy = 2;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
makebutton("−", gridbag, c);
c.gridx = 1;
makebutton("9", gridbag, c);
c.gridx = 2;
makebutton("8", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("7", gridbag, c);

c.gridy = 3;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
makebutton("+", gridbag, c);
c.gridx = 1;
makebutton("6", gridbag, c);
c.gridx = 2;
makebutton("5", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("4", gridbag, c);

c.gridy = 4;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
c.gridheight = 2;
c.weighty = 1.0;
makebutton("=", gridbag, c);
c.weighty = 0.0; //reset to the default
c.gridheight = 1;
c.gridx = 1;
makebutton("3", gridbag, c);
c.gridx = 2;
makebutton("2", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("1", gridbag, c);
c.gridwidth = 1; //reset to the default
c.gridx = 4;
makebutton(".", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 5;
makebutton("0", gridbag, c);
}
private void makebutton(String name,
GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
button.addActionListener(this);
add(button);
}
public void actionPerformed(ActionEvent e){
String com = e.getActionCommand();
hyouji.setText(com);
}
}






import base.*;
class Main {
public static void main(String args[]) {
AFrame frame= new AFrame();
CalcPanel p = new CalcPanel();
frame.add(p);
frame.pack();
frame.setTitle("calculator");
frame.setSize(frame.getPreferredSize());
frame.setVisible(true);
}
}
だいぶましになりました。
Mainは上と一緒ってことで。


import java.awt.*;
import java.util.*;
import javax.swing.JTextField;
import java.awt.event.*;

public class CalcPanel extends Panel implements ActionListener{
JTextField hyouji = new JTextField(12);
String[] keisan = new String[100];
int i = 0;
String open = " ";
String close = " ";
static char NONE= '\0';
static double register, x;
static char lastOp, tentativeOp;
static int state;
double w;
public CalcPanel() {
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints(); // the default setting

setFont(new Font("SansSerif", Font.PLAIN, 14));
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 5;
c.gridheight = 1;


gridbag.setConstraints(hyouji, c);
add(hyouji);


c.gridwidth = 1;
c.gridy = 1;
c.weightx = 1.0;
makebutton("×", gridbag, c);
c.gridx = 1;
makebutton("÷", gridbag, c);
c.gridx = 2;
makebutton("±", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("C", gridbag, c);

c.gridy = 2;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
makebutton("−", gridbag, c);
c.gridx = 1;
makebutton("9", gridbag, c);
c.gridx = 2;
makebutton("8", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("7", gridbag, c);

c.gridy = 3;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
makebutton("+", gridbag, c);
c.gridx = 1;
makebutton("6", gridbag, c);
c.gridx = 2;
makebutton("5", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("4", gridbag, c);

c.gridy = 4;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
c.gridheight = 2;
c.weighty = 1.0;
makebutton("=", gridbag, c);
c.weighty = 0.0; //reset to the default
c.gridheight = 1;
c.gridx = 1;
makebutton("3", gridbag, c);
c.gridx = 2;
makebutton("2", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("1", gridbag, c);
c.gridwidth = 1; //reset to the default
c.gridx = 4;
makebutton(".", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridy = 5;
c.gridx = 0;
makebutton("0", gridbag, c);
}
private void makebutton(String name,
GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
button.addActionListener(this);
add(button);
}
public void actionPerformed(ActionEvent e){
keisan[i] = e.getActionCommand();
close = close.concat(keisan[i]);

if(keisan[i] == "="){
if(i == 0){
hyouji.setText("計算式を入力");}
else{
for(int i= 0; i!=close.length(); i++){
char c= close.charAt(i);
switch( state ){
case 0:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '-': case '*': case '/':
x= register; tentativeOp= c;
state= 1; break;
case '=': break;
case 'c':
clearAll(); break;
default:
} break;
case 1:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
x= register; register= c-'0';
lastOp= tentativeOp; tentativeOp= NONE;
state= 2; break;
case '+': case '-': case '*': case '/':
tentativeOp= c; break;
case '=':
register= calc(x,tentativeOp,register);
lastOp= tentativeOp; tentativeOp= NONE;
state= 3; break;
case 'c':
clearAll(); break;
default:
} break;
case 2:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '-': case '*': case '/':
w= register; register= calc(x,lastOp,w); x= w;
tentativeOp= c;
state= 1; break;
case '=':
w= register; register= calc(x,lastOp,w); x= w;
state= 3; break;
case 'c':
clearAll(); break;
default:
} break;
case 3:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= c-'0';
state= 2; break;
case '+': case '-': case '*': case '/':
x= register;
tentativeOp= c;
state= 1; break;
case '=':
register= calc(register,lastOp,x); break;
case 'c':
clearAll(); break;
default:
} break;
}






}
}

Double r = new Double(register);
String k = r.toString(r);
hyouji.setText(k);
}
else{
if(keisan[i] == "C"){
hyouji.setText(null);
open = " ";
close = "";
}
else{
open = open.concat(keisan[i]);
hyouji.setText(open);
i++;}
}
}
private static void clearAll(){
register= x= 0.0;
lastOp= tentativeOp= NONE;
state= 0;
}
private static double calc(double l, char op, double r){
double res= 0.0;
switch( op ){
case '+': res= l+r; break;
case '-': res= l-r; break;
case '*': res= l*r; break;
case '=': res= l/r; break;
default:
System.exit(-1);
}
return res;
}
}
ほぼ、完成・・・と思いたい・・・w
相変わらず、小数の計算は出来ないけどね^^;
これ以上は勘弁w


import java.awt.*;
import java.util.*;
import javax.swing.JTextField;
import java.awt.event.*;

public class CalcPanel extends Panel implements ActionListener{
JTextField hyouji = new JTextField(12);
String[] keisan = new String[100];
int i = 0;
String saisho = "計算式を入力";
String open = "";
String close = "";
Double memory = 0.0;
Double memoryyobi = 0.0;
static char NONE= '\0';
static double register, x;
static char lastOp, tentativeOp;
static int state;
double w;
int mojisu = 0;
boolean hanten = true;
public CalcPanel() {
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints(); // the default setting

setFont(new Font("SansSerif", Font.PLAIN, 14));
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 5;
c.gridheight = 1;


gridbag.setConstraints(hyouji, c);
add(hyouji);hyouji.setText(saisho);


c.gridwidth = 1;
c.gridy = 1;
c.weightx = 1.0;
makebutton("MR",gridbag,c);
c.gridx = 1;
makebutton("M+",gridbag,c);
c.gridx = 2;
makebutton("M-",gridbag,c);
c.gridx = 3;
makebutton("MC",gridbag,c);

c.gridwidth = 1;
c.gridy = 2;
c.weightx = 1.0;
c.gridx = 0;
makebutton("×", gridbag, c);
c.gridx = 1;
makebutton("÷", gridbag, c);
c.gridx = 2;
makebutton("±", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("C", gridbag, c);

c.gridy = 3;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
makebutton("-", gridbag, c);
c.gridx = 1;
makebutton("9", gridbag, c);
c.gridx = 2;
makebutton("8", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("7", gridbag, c);

c.gridy = 4;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
makebutton("+", gridbag, c);
c.gridx = 1;
makebutton("6", gridbag, c);
c.gridx = 2;
makebutton("5", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("4", gridbag, c);

c.gridy = 5;
c.gridx = 0;
c.gridwidth = 1; //reset to the default
c.gridheight = 2;
c.weighty = 1.0;
makebutton("=", gridbag, c);
c.weighty = 0.0; //reset to the default
c.gridheight = 1;
c.gridx = 1;
makebutton("3", gridbag, c);
c.gridx = 2;
makebutton("2", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 3;
makebutton("1", gridbag, c);
c.gridy = 6;
c.gridwidth = 1; //reset to the default
c.gridx = 1;
makebutton(".", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridx = 2;
makebutton("0", gridbag, c);
}
private void makebutton(String name,
GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
button.addActionListener(this);
add(button);
}
public void actionPerformed(ActionEvent e){
boolean hantei = false;
keisan[i] = e.getActionCommand();
close = close.concat(keisan[i]);

if(keisan[i] == "="){
if(i == 0){
hyouji.setText("計算式を入力");}
else{
for(int i= 0; i!=close.length(); i++){
char c= close.charAt(i);

switch( state ){
case 0:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '-': case '×': case '÷':
x= register; tentativeOp= c;
state= 1; break;
case '=': break;
case '±':
register = register * -1;break;
default:
} break;
case 1:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
x= register; register= c-'0';
lastOp= tentativeOp; tentativeOp= NONE;
state= 2; break;
case '+': case '-': case '×': case '÷':
tentativeOp= c; break;
case '=':
register= calc(x,tentativeOp,register);
lastOp= tentativeOp; tentativeOp= NONE;
state= 3; break;
case '±':
register = register * -1;break;
default:
} break;
case 2:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '-': case '×': case '÷':
w= register; register= calc(x,lastOp,w); x= w;
tentativeOp= c;
state= 1; break;
case '=':
w= register; register= calc(x,lastOp,w); x= w;
state= 3; break;
case '±':
register = register * -1;break;
default:
} break;
case 3:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= c-'0';
state= 2; break;
case '+': case '-': case '×': case '÷':
x= register;
tentativeOp= c;
state= 1; break;
case '=':
register= calc(register,lastOp,x); break;
case '±':
register = register * -1;break;
default:
} break;
}






}
}

Double r = new Double(register);
memoryyobi = r;
String k = r.toString(r);
hyouji.setText(k);
open = "";
close = "";
register = 0.0;
state = 0;
mojisu = 0;
}
else{
if(keisan[i] == "C"){
hyouji.setText(null);
open = " ";
close = "";
mojisu = 0;
}
else{
if(keisan[i] == "MR"){
hyouji.setText(memory.toString());}
else{
if(keisan[i] == "M+"){
if(open == ""){
memory = memory + memoryyobi;}
else{
memory = memory + memory.valueOf(open);
open = "";
close = "";}
hyouji.setText(open);
}
else{
if(keisan[i] == "M-"){
if(open == ""){
memory = memory - memoryyobi;}
else{
memory = memory - memory.valueOf(open);
open = "";
close = "";
}
hyouji.setText(open);
}else{
if(keisan[i] == "MC"){
memory = 0.0;
}else{

switch(keisan[i].charAt(0)){
case '1':case '2':case '3':case '4':case '5':
case '6':case '7':case '8':case '9':case '0':
open = open.concat(keisan[i]);
hyouji.setText(open);
i++;
mojisu++;
break;
case '+':case '-':case '×':case '÷':
open = open.concat(keisan[i]);
hyouji.setText(open);
i++;
mojisu = 0;
hanten = false;break;
case '±':
if(hanten){open = "-" + open;}
else{
if(open.charAt(open.length()-mojisu-1) == '-'){
String mae = open.substring(0,open.length()-mojisu-1);
String ushiro = open.substring(open.length()-mojisu,open.length());
open = mae + "+" + ushiro;
hyouji.setText(open);
}else{
String mae = open.substring(0,open.length()-mojisu-1);
String ushiro = open.substring(open.length()-mojisu,open.length());
open = mae + "-" + ushiro;
hyouji.setText(open);
}break;
}
}
}
}
}
}
}
}
}
private static void clearAll(){
register= x= 0.0;
lastOp= tentativeOp= NONE;
state= 0;
}
private static double calc(double l, char op, double r){
double res= 0.0;
switch( op ){
case '+': res= l+r; break;
case '-': res= l-r; break;
case '×': res= l*r; break;
case '÷': res= l/r; break;
default:
System.exit(-1);
}
return res;
}
}
import java.awt.*;
import java.util.*;
import java.awt.event.*;

public class CalcPanel extends Panel {
static final char NONE= '\0';
static double register, x;
static char lastOp, tentativeOp;
static int state;
static double keta;
public CalcPanel() {
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cc = new GridBagConstraints(); // the default setting

setFont(new Font("SansSerif", Font.PLAIN, 14));
setLayout(gridbag);
cc.fill = GridBagConstraints.BOTH;

cc.weightx = 1.0;
makebutton('×', gridbag, cc);
makebutton('÷', gridbag, cc);
makebutton('±', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('C', gridbag, cc);

cc.gridwidth = 1; //reset to the default
makebutton('−', gridbag, cc);
makebutton('9', gridbag, cc);
makebutton('8', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('7', gridbag, cc);

cc.gridwidth = 1; //reset to the default
makebutton('+', gridbag, cc);
makebutton('6', gridbag, cc);
makebutton('5', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('4', gridbag, cc);

cc.gridwidth = 1; //reset to the default
cc.gridheight = 2;
cc.weighty = 1.0;
makebutton('=', gridbag, cc);
cc.weighty = 0.0; //reset to the default
cc.gridheight = 1;
makebutton('3', gridbag, cc);
makebutton('2', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('1', gridbag, cc);
cc.gridwidth = 1; //reset to the default
makebutton('.', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('0', gridbag, cc);
}
private void makebutton(final Character c,
GridBagLayout gridbag,
GridBagConstraints cc) {
Button button = new Button(c.toString());
gridbag.setConstraints(button, cc);
add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
double w;
switch( state ){
case 0:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '−': case '×': case '÷':
x= register; tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '.':
keta=10;
state=4; break;
case '=': break;
case 'C':
clearAll(); break;
default:
} break;

case 1:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
x= register; register= c-'0';
lastOp= tentativeOp; tentativeOp= NONE;
state= 2; break;
case '+': case '−': case '×': case '÷':
tentativeOp= c; break;
case '±':
register*=-1;break;
case '=':
register= calc(x,tentativeOp,register);
lastOp= tentativeOp; tentativeOp= NONE;
state= 3; break;
case 'C':
clearAll(); break;
default:
} break;

case 2:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '−': case '×': case '÷':
w= register; register= calc(x,lastOp,w); x= w;
tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '.':
keta=10;
state=5; break;
case '=':
w= register; register= calc(x,lastOp,w); x= w;
state= 3; break;
case 'C':
clearAll(); break;
default:
} break;

case 3:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= c-'0';
state= 2; break;
case '+': case '−': case '×': case '÷':
x= register;
tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '=':
register= calc(register,lastOp,x); break;
case 'C':
clearAll(); break;
default:
} break;

case 4:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register+=(c-'0')/keta;
keta*=10; break;
case '+': case '−': case '×': case '÷':
x= register; tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '=': break;
case 'C':
clearAll(); break;
default:
} break;

case 5:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register+=(c-'0')/keta;
keta*=10; break;
case '+': case '−': case '×': case '÷':
w= register; register= calc(x,lastOp,w); x= w;
tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '=':
w= register; register= calc(x,lastOp,w); x= w;
state= 3; break;
case 'C':
clearAll(); break;
default:
} break;
}
System.out.println("計算結果:"+register);
}}
);
}
private static void clearAll(){
register= x= 0.0;
lastOp= tentativeOp= NONE;
state= 0;
}
private static double calc(double l, char op, double r){
double res= 0.0;
switch( op ){
case NONE:
System.out.println("NONE appeared"); System.exit(-1);
case '+': res= l+r; break;
case '−': res= l-r; break;
case '×': res= l*r; break;
case '÷': res= l/r; break;
default:
System.out.println("op:"+op); System.exit(-1);
}
return res;
}
}
オセロ。バグチェックヨロ。

Mainクラス

import base.*;
import java.util.*;
import java.io.*;

class Main{
public static void main(String[] args){
GameBoard gameboard = new GameBoard(400,400);
}
}


GameBoardクラス


import base.*;
import java.awt.Frame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.awt.event.*;
import javax.swing.JTextField;
import java.awt.Button;
import javax.swing.JLabel;
import java.util.Scanner;




public class GameBoard implements ActionListener{
BFrame bf;
Canvas cv;
static int M= 4;
static int c= 1;
JLabel xmae = new JLabel("縦:");
JLabel xushiro = new JLabel("番目");
JLabel ymae = new JLabel("横:");
JLabel yushiro = new JLabel("番目");
JLabel tyui = new JLabel("コマを打つ場所を指定してください。あなたのコマは白です。");
JTextField x = new JTextField("  ");
JTextField y = new JTextField("  ");
static int[][] board= new int[6][6];
static int[] di= {1, 1, 1, -1,-1,-1, 0, 0 };
static int[] dj= {1, 0,-1, 1, 0,-1, 1,-1 };
Button button = new Button("コマを打つ");
public GameBoard(int height,int width){
button.addActionListener(this);
for(int i=0; i!=6; i++){
for(int j=0; j!=6; j++){
board[i][j]= 0;
}
}
board[2][2]= 1;
board[3][3]= 1;
board[2][3]= -1;
board[3][2]= -1;
bf = new BFrame(height,width);
bf.setTitle("OthelloGame");
cv = new Canvas(){
public void paint(Graphics g){
g.setColor(Color.green);
g.fillRect(0,0,399,399);
g.setColor(Color.black);
g.drawRect(0,0,399,399);
g.drawLine(0,99,399,99);
g.drawLine(0,199,399,199);
g.drawLine(0,299,399,299);
g.drawLine(99,0,99,399);
g.drawLine(199,0,199,399);
g.drawLine(299,0,299,399);
g.fillOval(199,99,100,100);
g.fillOval(99,199,100,100);
g.setColor(Color.white);
g.fillOval(99,99,100,100);
g.fillOval(199,199,100,100);
for(int i = 1;i<6;i++){
for(int j = 1;j<6;j++){
if(board[i][j]==1){
g.setColor(Color.white);
g.fillOval((j-1)*100-1,(i-1)*100-1,100,100);}
if(board[i][j]==-1){
g.setColor(Color.black);
g.fillOval((j-1)*100-1,(i-1)*100-1,100,100);}
}
}
}
};
cv.setSize(400,400);
bf.add(cv);
bf.add(xmae);
bf.add(x);
bf.add(xushiro);
bf.add(ymae);
bf.add(y);
bf.add(yushiro);
bf.add(button);
bf.add(tyui);
}
public void actionPerformed(ActionEvent e){
try{
tyui.setText("コマを打つ場所を指定してください。");
String zahyox = x.getText();
String zahyoy = y.getText();
Scanner scx = new Scanner(zahyox);
Scanner scy = new Scanner(zahyoy);
int i= scx.nextInt(); int j= scy.nextInt();
if( dormant(board, c)==false ){
if( (1<=i&&i<=M)&&(1<=j&&j<=M) ){
if( movable(board,c, i,j) ){
board= move(board,c,i,j); c= -c;
}
}else{tyui.setText("そこには打てません。");}
}else{tyui.setText("試合終了〜!!");}
cv.repaint();
}catch(Exception aaa){}
if( dormant(board, c)==false ){
if(c == -1){
int[] v= solve(board, c);
board = move(board,c,v[1],v[2]);c=-c;
}
}
else{tyui.setText("試合終了〜!!");}
if(dormant(board,c)==true){tyui.setText("試合終了〜!!");}
x.setText("  ");
y.setText("  ");
cv.repaint();
}
static int[] solve(int[][] b, int c){
int v= 0;
if( dormant(b,c) ){
if( dormant(b,-c) ){
for(int i= 1; i<=M; i++)
for(int j= 1; j<=M; j++)
v+= b[i][j];
}else{
v= solve(b,-c)[0];
}
return new int[]{v,0,0};
}
int i0= -1; int j0= 0;
for(int i=1; i<=M; i++)for(int j=1; j<=M; j++){
if( movable(b,c,i,j) ){
int v0= solve(move(b,c,i,j), -c)[0];
if( i0==-1 ){ v= v0; i0= i; j0= j; }
else
if( c>0 ){ if( v0>v ){ v= v0; i0= i; j0= j; }}
else { if( v0<v ){ v= v0; i0= i; j0= j; }}
}
}
return new int[]{v, i0, j0};
}
static boolean movable(int[][] b, int c, int i0, int j0){
if( b[i0][j0]!=0 ) return false;
for(int k= 0; k!=8; k++){
if( b[i0+di[k]][j0+dj[k]]!=-c ) continue;
int i= i0+di[k]; int j= j0+dj[k];
while( b[i][j]==-c ){ i+= di[k]; j+= dj[k]; }
if( b[i][j]==c ) return true;
}
return false;
}
static boolean dormant(int[][] b, int c){
for(int i= 1; i<=M; i++)
for(int j= 1; j<=M; j++){ if( movable(b, c,i,j) ) return false; }
return true;
}
static int[][] move(int[][] b0, int c, int i0, int j0){
int[][] b= new int[M+2][M+2];
for(int i= 0; i!=M+2; i++)for(int j= 0; j!=M+2; j++)
b[i][j]= b0[i][j];
b[i0][j0]= c;
for(int k= 0; k!=8; k++){
if( b[i0+di[k]][j0+dj[k]]!=-c ) continue;
int i= i0+di[k]; int j= j0+dj[k];
while( b[i][j]==-c ){ i+= di[k]; j+= dj[k]; }
if( b[i][j]!=c ) continue;
while( b[i-di[k]][j-dj[k]]==-c ){
i-= di[k]; j-= dj[k]; b[i][j]= c;
}
}
return b;
}



}
import base.*;
import java.awt.Frame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.awt.event.*;
import javax.swing.JTextField;
import java.awt.Button;
import javax.swing.JLabel;
import java.util.Scanner;




public class GameBoard implements ActionListener{
BFrame bf;
Canvas cv;
static int M= 4;
static int c= 1;
JLabel xmae = new JLabel("縦:");
JLabel xushiro = new JLabel("番目");
JLabel ymae = new JLabel("横:");
JLabel yushiro = new JLabel("番目");
JLabel tyui = new JLabel("コマを打つ場所を指定してください。あなたのコマは白です。");
JTextField x = new JTextField("  ");
JTextField y = new JTextField("  ");
Button sente = new Button("先手");
Button gote = new Button("後手");

static int[][] board= new int[6][6];
static int[] di= {1, 1, 1, -1,-1,-1, 0, 0 };
static int[] dj= {1, 0,-1, 1, 0,-1, 1,-1 };
Button button = new Button("コマを打つ");
public GameBoard(int height,int width){
button.addActionListener(this);
gote.addActionListener(this);
for(int i=0; i!=6; i++){
for(int j=0; j!=6; j++){
board[i][j]= 0;
}
}
board[2][2]= 1;
board[3][3]= 1;
board[2][3]= -1;
board[3][2]= -1;
bf = new BFrame(height,width);
bf.setTitle("OthelloGame");
cv = new Canvas(){
public void paint(Graphics g){
g.setColor(Color.green);
g.fillRect(0,0,399,399);
g.setColor(Color.black);
g.drawRect(0,0,399,399);
g.drawLine(0,99,399,99);
g.drawLine(0,199,399,199);
g.drawLine(0,299,399,299);
g.drawLine(99,0,99,399);
g.drawLine(199,0,199,399);
g.drawLine(299,0,299,399);
g.fillOval(199,99,100,100);
g.fillOval(99,199,100,100);
g.setColor(Color.white);
g.fillOval(99,99,100,100);
g.fillOval(199,199,100,100);
for(int i = 1;i<6;i++){
for(int j = 1;j<6;j++){
if(board[i][j]==1){
g.setColor(Color.white);
g.fillOval((j-1)*100-1,(i-1)*100-1,100,100);}
if(board[i][j]==-1){
g.setColor(Color.black);
g.fillOval((j-1)*100-1,(i-1)*100-1,100,100);}
}
}
}
};
cv.setSize(400,400);
bf.add(cv);
bf.add(sente);
bf.add(gote);
bf.add(xmae);
bf.add(x);
bf.add(xushiro);
bf.add(ymae);
bf.add(y);
bf.add(yushiro);
bf.add(button);
bf.add(tyui);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==button) {
try{
tyui.setText("コマを打つ場所を指定してください。");
String zahyox = x.getText();
String zahyoy = y.getText();
Scanner scx = new Scanner(zahyox);
Scanner scy = new Scanner(zahyoy);
int i= scx.nextInt(); int j= scy.nextInt();
if( dormant(board, c)==false ){
if( (1<=i&&i<=M)&&(1<=j&&j<=M) ){
if( movable(board,c, i,j) ){
board= move(board,c,i,j); c= -c;
}
}else{tyui.setText("そこには打てません。");}
}else{tyui.setText("試合終了〜!!");}
cv.repaint();
}catch(Exception aaa){}
if( dormant(board, c)==false ){
if(c == -1){
int[] v= solve(board, c);
board = move(board,c,v[1],v[2]);c=-c;
}
}
else{tyui.setText("試合終了〜!!");}
if(dormant(board,c)==true){tyui.setText("試合終了〜!!");}
x.setText("  ");
y.setText("  ");
cv.repaint();
}
if(e.getSource()==gote){
try{
c=-c;
if( dormant(board, c)==false ){
if(c == -1){
int[] v= solve(board, c);
board = move(board,c,v[1],v[2]);c=-c;
}
}else{tyui.setText("THE END");}
if(dormant(board,c)==true){tyui.setText("THE END");}
x.setText("  ");
y.setText("  ");
cv.repaint();
gote.removeActionListener(this);
}catch(Exception aa){}
}
}
static int[] solve(int[][] b, int c){
int v= 0;
if( dormant(b,c) ){
if( dormant(b,-c) ){
for(int i= 1; i<=M; i++)
for(int j= 1; j<=M; j++)
v+= b[i][j];
}else{
v= solve(b,-c)[0];
}
return new int[]{v,0,0};
}
int i0= -1; int j0= 0;
for(int i=1; i<=M; i++)for(int j=1; j<=M; j++){
if( movable(b,c,i,j) ){
int v0= solve(move(b,c,i,j), -c)[0];
if( i0==-1 ){ v= v0; i0= i; j0= j; }
else
if( c>0 ){ if( v0>v ){ v= v0; i0= i; j0= j; }}
else { if( v0<v ){ v= v0; i0= i; j0= j; }}
}
}
return new int[]{v, i0, j0};
}
static boolean movable(int[][] b, int c, int i0, int j0){
if( b[i0][j0]!=0 ) return false;
for(int k= 0; k!=8; k++){
if( b[i0+di[k]][j0+dj[k]]!=-c ) continue;
int i= i0+di[k]; int j= j0+dj[k];
while( b[i][j]==-c ){ i+= di[k]; j+= dj[k]; }
if( b[i][j]==c ) return true;
}
return false;
}
static boolean dormant(int[][] b, int c){
for(int i= 1; i<=M; i++)
for(int j= 1; j<=M; j++){ if( movable(b, c,i,j) ) return false; }
return true;
}
static int[][] move(int[][] b0, int c, int i0, int j0){
int[][] b= new int[M+2][M+2];
for(int i= 0; i!=M+2; i++)for(int j= 0; j!=M+2; j++)
b[i][j]= b0[i][j];
b[i0][j0]= c;
for(int k= 0; k!=8; k++){
if( b[i0+di[k]][j0+dj[k]]!=-c ) continue;
int i= i0+di[k]; int j= j0+dj[k];
while( b[i][j]==-c ){ i+= di[k]; j+= dj[k]; }
if( b[i][j]!=c ) continue;
while( b[i-di[k]][j-dj[k]]==-c ){
i-= di[k]; j-= dj[k]; b[i][j]= c;
}
}
return b;
}



}



先手と後手を選べるようにし真下。おしまいべじーた
import base.*;
import java.awt.Frame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.awt.event.*;
import javax.swing.JTextField;
import java.awt.Button;
import javax.swing.JLabel;
import java.util.Scanner;




public class GameBoard implements ActionListener{
BFrame bf;
Canvas cv;
static int M= 4;
static int c= 1;
JLabel xmae = new JLabel("縦:");
JLabel xushiro = new JLabel("番目");
JLabel ymae = new JLabel("横:");
JLabel yushiro = new JLabel("番目");
JLabel tyui = new JLabel("コマを打つ場所を指定してください。あなたのコマは白です。");
JTextField x = new JTextField("  ");
JTextField y = new JTextField("  ");
Button sente = new Button("先手");
Button gote = new Button("後手");
Button pasu = new Button("パス");

static int[][] board= new int[6][6];
static int[] di= {1, 1, 1, -1,-1,-1, 0, 0 };
static int[] dj= {1, 0,-1, 1, 0,-1, 1,-1 };
Button button = new Button("コマを打つ");
public GameBoard(int height,int width){
button.addActionListener(this);
gote.addActionListener(this);
pasu.addActionListener(this);
for(int i=0; i!=6; i++){
for(int j=0; j!=6; j++){
board[i][j]= 0;
}
}
board[2][2]= 1;
board[3][3]= 1;
board[2][3]= -1;
board[3][2]= -1;
bf = new BFrame(height,width);
bf.setTitle("OthelloGame");
cv = new Canvas(){
public void paint(Graphics g){
g.setColor(Color.green);
g.fillRect(0,0,399,399);
g.setColor(Color.black);
g.drawRect(0,0,399,399);
g.drawLine(0,99,399,99);
g.drawLine(0,199,399,199);
g.drawLine(0,299,399,299);
g.drawLine(99,0,99,399);
g.drawLine(199,0,199,399);
g.drawLine(299,0,299,399);
g.fillOval(199,99,100,100);
g.fillOval(99,199,100,100);
g.setColor(Color.white);
g.fillOval(99,99,100,100);
g.fillOval(199,199,100,100);
for(int i = 1;i<6;i++){
for(int j = 1;j<6;j++){
if(board[i][j]==1){
g.setColor(Color.white);
g.fillOval((j-1)*100-1,(i-1)*100-1,100,100);}
if(board[i][j]==-1){
g.setColor(Color.black);
g.fillOval((j-1)*100-1,(i-1)*100-1,100,100);}
}
}
}
};
cv.setSize(400,400);
bf.add(cv);
bf.add(sente);
bf.add(gote);
bf.add(pasu);
bf.add(xmae);
bf.add(x);
bf.add(xushiro);
bf.add(ymae);
bf.add(y);
bf.add(yushiro);
bf.add(button);
bf.add(tyui);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==button) {
try{
tyui.setText("コマを打つ場所を指定してください。");
String zahyox = x.getText();
String zahyoy = y.getText();
Scanner scx = new Scanner(zahyox);
Scanner scy = new Scanner(zahyoy);
int i= scx.nextInt(); int j= scy.nextInt();
if( dormant(board, c)==false ){
if( (1<=i&&i<=M)&&(1<=j&&j<=M) ){
if( movable(board,c, i,j) ){
board= move(board,c,i,j); c= -c;
}
}else{tyui.setText("そこには打てません。");}
}else{tyui.setText("試合終了〜!!");}
cv.repaint();
}catch(Exception aaa){}
if( dormant(board, c)==false ){
if(c == -1){
int[] v= solve(board, c);
board = move(board,c,v[1],v[2]);
}
}
else{tyui.setText("試合終了〜!!");}
if(dormant(board,c)==true){tyui.setText("試合終了〜!!");}
c=-c;
x.setText("  ");
y.setText("  ");
cv.repaint();
}
//後手が押されたときに起こす動作
if(e.getSource()==gote){
try{
c=-c;
if( dormant(board, c)==false ){
if(c == -1){
int[] v= solve(board, c);
board = move(board,c,v[1],v[2]);c=-c;
}
}else{tyui.setText("むり");}
if(dormant(board,c)==true){tyui.setText("THE END");}
x.setText("  ");
y.setText("  ");
cv.repaint();
sente.removeActionListener(this);
gote.removeActionListener(this);
}catch(Exception aa){}
}
if(e.getSource()==sente){
try{
sente.removeActionListener(this);
gote.removeActionListener(this);
}catch(Exception aa){}
}
//パスボタンが押されたときの動作
if(e.getSource()==pasu){
try{
c=-c;
if( dormant(board, c)==false ){
if(c == -1){
int[] v= solve(board, c);
board = move(board,c,v[1],v[2]);
}
}else{tyui.setText("THE END");}

if(dormant(board,c)==true){tyui.setText("THE END");}
c=-c;
x.setText("  ");
y.setText("  ");
cv.repaint();
}catch(Exception aa){}
}
}
}
static int[] solve(int[][] b, int c){
int v= 0;
if( dormant(b,c) ){
if( dormant(b,-c) ){
for(int i= 1; i<=M; i++)
for(int j= 1; j<=M; j++)
v+= b[i][j];
}else{
v= solve(b,-c)[0];
}
return new int[]{v,0,0};
}
int i0= -1; int j0= 0;
for(int i=1; i<=M; i++)for(int j=1; j<=M; j++){
if( movable(b,c,i,j) ){
int v0= solve(move(b,c,i,j), -c)[0];
if( i0==-1 ){ v= v0; i0= i; j0= j; }
else
if( c>0 ){ if( v0>v ){ v= v0; i0= i; j0= j; }}
else { if( v0<v ){ v= v0; i0= i; j0= j; }}
}
}
return new int[]{v, i0, j0};
}
static boolean movable(int[][] b, int c, int i0, int j0){
if( b[i0][j0]!=0 ) return false;
for(int k= 0; k!=8; k++){
if( b[i0+di[k]][j0+dj[k]]!=-c ) continue;
int i= i0+di[k]; int j= j0+dj[k];
while( b[i][j]==-c ){ i+= di[k]; j+= dj[k]; }
if( b[i][j]==c ) return true;
}
return false;
}
static boolean dormant(int[][] b, int c){
for(int i= 1; i<=M; i++)
for(int j= 1; j<=M; j++){ if( movable(b, c,i,j) ) return false; }
return true;
}
static int[][] move(int[][] b0, int c, int i0, int j0){
int[][] b= new int[M+2][M+2];
for(int i= 0; i!=M+2; i++)for(int j= 0; j!=M+2; j++)
b[i][j]= b0[i][j];
b[i0][j0]= c;
for(int k= 0; k!=8; k++){
if( b[i0+di[k]][j0+dj[k]]!=-c ) continue;
int i= i0+di[k]; int j= j0+dj[k];
while( b[i][j]==-c ){ i+= di[k]; j+= dj[k]; }
if( b[i][j]!=c ) continue;
while( b[i-di[k]][j-dj[k]]==-c ){
i-= di[k]; j-= dj[k]; b[i][j]= c;
}
}
return b;
}



}
パス追加 バグ少し解決
import java.awt.*;
import java.util.*;
import java.awt.event.*;

public class CalcPanel extends Panel {
static final char NONE= '\0';
static double register, x;
static char lastOp, tentativeOp;
static int state;
static double keta;
static double mm=0;
static boolean renzoku;
public CalcPanel() {
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cc = new GridBagConstraints(); // the default setting

setFont(new Font("SansSerif", Font.PLAIN, 14));
setLayout(gridbag);
cc.fill = GridBagConstraints.BOTH;

cc.weightx = 1.0;
Button MC = new Button("MC");
gridbag.setConstraints(MC, cc);
add(MC);
Button m= new Button("M-");
gridbag.setConstraints(m, cc);
add(m);
Button M = new Button("M+");
gridbag.setConstraints(M, cc);
add(M);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
Button MR = new Button("MR");
gridbag.setConstraints(MR, cc);
add(MR);

MC.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mm=0;
x=register=0;
System.out.println("M:"+mm);
state=0;
}}
);

M.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mm+=register;
System.out.println("M:"+mm);
state=0;
renzoku=true;
}}
);

m.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mm-=register;
System.out.println("M:"+mm);
state=0;
renzoku=true;
}}
);

MR.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("M:"+mm);
register=x=0;
state=0;
}}
);
cc.gridwidth = 1; //reset to the default
makebutton('×', gridbag, cc);
makebutton('÷', gridbag, cc);
makebutton('±', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('C', gridbag, cc);

cc.gridwidth = 1; //reset to the default
makebutton('−', gridbag, cc);
makebutton('9', gridbag, cc);
makebutton('8', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('7', gridbag, cc);

cc.gridwidth = 1; //reset to the default
makebutton('+', gridbag, cc);
makebutton('6', gridbag, cc);
makebutton('5', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('4', gridbag, cc);

cc.gridwidth = 1; //reset to the default
cc.gridheight = 2;
cc.weighty = 1.0;
makebutton('=', gridbag, cc);
cc.weighty = 0.0; //reset to the default
cc.gridheight = 1;
makebutton('3', gridbag, cc);
makebutton('2', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('1', gridbag, cc);
cc.gridwidth = 1; //reset to the default
makebutton('.', gridbag, cc);
cc.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton('0', gridbag, cc);
}
private void makebutton(final Character c,
GridBagLayout gridbag,
GridBagConstraints cc) {
Button button = new Button(c.toString());
gridbag.setConstraints(button, cc);
add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(renzoku)x=register=0;
renzoku=false;
double w;
switch( state ){
case 0:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '−': case '×': case '÷':
x= register; tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '.':
keta=10;
state=4; break;
case '=': break;
case 'C':
clearAll(); break;
default:
} break;

case 1:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
x= register; register= c-'0';
lastOp= tentativeOp; tentativeOp= NONE;
state= 2; break;
case '+': case '−': case '×': case '÷':
tentativeOp= c; break;
case '±':
register*=-1;break;
case '=':
register= calc(x,tentativeOp,register);
lastOp= tentativeOp; tentativeOp= NONE;
state= 3; break;
case 'C':
clearAll(); break;
default:
} break;

case 2:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= register*10+(c-'0'); break;
case '+': case '−': case '×': case '÷':
w= register; register= calc(x,lastOp,w); x= w;
tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '.':
keta=10;
state=5; break;
case '=':
w= register; register= calc(x,lastOp,w); x= w;
state= 3; break;
case 'C':
clearAll(); break;
default:
} break;

case 3:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register= c-'0';
state= 2; break;
case '+': case '−': case '×': case '÷':
x= register;
tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '=':
register= calc(register,lastOp,x); break;
case 'C':
clearAll(); break;
default:
} break;

case 4:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register+=(c-'0')/keta;
keta*=10; break;
case '+': case '−': case '×': case '÷':
x= register; tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '=': break;
case 'C':
clearAll(); break;
default:
} break;

case 5:
switch( c ){
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
register+=(c-'0')/keta;
keta*=10; break;
case '+': case '−': case '×': case '÷':
w= register; register= calc(x,lastOp,w); x= w;
tentativeOp= c;
state= 1; break;
case '±':
register*=-1;break;
case '=':
w= register; register= calc(x,lastOp,w); x= w;
state= 3; break;
case 'C':
clearAll(); break;
default:
} break;
}
System.out.println("計算結果:"+register);
}}
);
}

private static void clearAll(){
register= x= 0.0;
lastOp= tentativeOp= NONE;
state= 0;
}

private static double calc(double l, char op, double r){
double res= 0.0;
switch( op ){
case NONE:
System.out.println("NONE appeared"); System.exit(-1);
case '+': res= l+r; break;
case '−': res= l-r; break;
case '×': res= l*r; break;
case '÷': res= l/r; break;
default:
System.out.println("op:"+op); System.exit(-1);
}
return res;
}
}

ログインすると、残り13件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

D$N団 更新情報

D$N団のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング