2010年6月3日 星期四

Java 程式設計心得

學習程式設計簡單來說就是要把握幾個原則,
邏輯上要正確,接著要符合電腦做事的方法,
這學期在學習Java程式語言遇到了不少問題,
首先就是程式的邏輯上並沒有問題,
但電腦卻無法執行,
這其中發現了許多問題,
其中一個問題是字型上的問題,
直接從網路上複製下來的資料貼到Wordpad中,
可能會在編譯時會發生問題,
或者是在讀檔時發生問題,
其中一個解決方式就是把資料先存到記事本存檔,
接著就是資料型態上轉換,
資料轉換有時會無法直接轉換,
必須先行轉成其他形式,
再轉成要呈現的格式,
真的是從錯誤中學習JAVA。

2010年5月28日 星期五

99/5/28 Java-BMI值計算


















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

public class fivete
{
public static void main(String args[])
{
String s1,s2,s3,bmis;
int i,num;
double h,w,bmi;
num = Integer.parseInt(args[0]);
try
{
FileReader ip=new FileReader("940304.SM");
BufferedReader bip=new BufferedReader(ip);

FileWriter opp=new FileWriter("940304w.SM");
BufferedWriter bopp=new BufferedWriter(opp);

for ( i = 1 ; i < num + 1; i++ )
{
s1=bip.readLine();
StringTokenizer cs =new StringTokenizer(s1,",");
s2=cs.nextToken();
s3=cs.nextToken();
h= Double.parseDouble(s2);
w= Double.parseDouble(s3);

bopp.write("身高:" + s2 +"CM" +" "+ "體重:" + s3 + "KG" + " " );


bmi=w/Math.pow(h/100,2);
bmis=Double.toString(bmi);

bopp.write("BMI:" + bmis + "\n");
if(bmi>25.0)
{
bopp.write("體重過重" );
}
else if(bmi<20.0)
{
bopp.write("體重過輕" );
}
else
{
bopp.write("正常範圍" );
}

bopp.write("\n");


bopp.flush();



}
bopp.close();
System.out.println("計算完成");


}
catch(Exception e)
{
System.out.println("Exception");
}


}
}



注意事項:
1.檔案的值先放入記事本再存入wordpad,避免因字型影響讀取。
2.範例:名稱.close();必須放在迴圈之外,避免迴圈發生錯誤。
3.args[0]為存取人數的變數,務必在執行時輸入。
4.同一行的值必須放入同樣多的變數才能將值全部讀取。
5.型態轉換:String to Double EX:w= Double.parseDouble(s3);
Double to String EX:bmis=Double.toString(bmi);
      String to Integer EX:num = Integer.parseInt(args[0]);
6.同一行斷句取值方式:StringTokenizer cs =new StringTokenizer(s1,",");
         s2=cs.nextToken();
7.要用StringTokenize,必須先宣告import java.util.*; 。

99/5/21 Java-迴文判斷






















import java.io.*;
import java.lang.Long;
import java.util.StringTokenizer;
import java.math.BigInteger;
import java.util.*;

public class fiveto
{
public static void main(String args[])
{
String op ="";
try
{
FileReader ip=new FileReader("940301.SM");
BufferedReader bip=new BufferedReader(ip);
String s1=bip.readLine();
String s2="";
for (int i=s1.length();i>0;i--)
{
char ch =s1.charAt(i-1);
s2=s2+ch;
}
if (s1.equals(s2))
{
op=s1+" is a palindrome.";
}
else
{
op=s1+" is not a palindrome.";
}

FileWriter opp=new FileWriter("op.txt");
BufferedWriter bopp=new BufferedWriter(opp);
bopp.write(op);
bopp.flush();

bopp.close();

}
catch(Exception e)
{
System.out.println("Exception");
}


}
}

2010年5月13日 星期四

99/5/14 Java 長整數運算


















import java.io.*;
import java.lang.Long;
import java.util.StringTokenizer;
import java.math.BigInteger;
import java.util.*;

class ffourteen
{

public static void main(String[] args)
{
String line;
long bi1,bi2,total;



try
{
FileReader inputjerry=new FileReader("input.txt");
BufferedReader binputjerry=new BufferedReader(inputjerry);
line=binputjerry.readLine();
StringTokenizer stline=new StringTokenizer(line, " ");

bi1=Long.parseLong(stline.nextToken());
System.out.println(bi1);

bi2=Long.parseLong(stline.nextToken());
System.out.println(bi2);

BigInteger bn1 = new BigInteger(stline.nextToken());
System.out.println(bn1);

BigInteger bn2 = new BigInteger(stline.nextToken());
System.out.println(bn2);

bn1=bn1.remainder(bn2);
System.out.println(bn1);

total =bi1+ bi2;
System.out.println(total);
FileWriter outputjerry=new FileWriter("outputtext.txt");
BufferedWriter boutputjerry=new BufferedWriter(outputjerry);
boutputjerry.write(String.valueOf(total));
boutputjerry.flush();

boutputjerry.close();

}
catch(Exception e)
{
System.out.println("Exception");
}
}

}

2010年5月7日 星期五

99/5/7 Java 檔案取值求和更改副檔名輸出檔案














import java.io.*;
import java.lang.Byte;
import java.util.StringTokenizer;
class HelloJava
{
public static void main(String[] args)
{
String InFile;
String OutFile;
String num;
int i;
double line;
double total = 0.0;
double avg ;
String end;
File mingfile = new File("mf.txt");


try
{
InFile=args[0];
System.out.println(InFile);
FileReader rFile = new FileReader(InFile);
BufferedReader brFile = new BufferedReader(rFile);
for( i = 1 ; i < 12 ; i++)
{
num = brFile.readLine();
System.out.println(num);
line = Double.parseDouble(num);
total = total + line;
}
avg = total / 11;
end = Double.toString(avg);
StringTokenizer tokens = new StringTokenizer( InFile, ".");
OutFile=tokens.nextToken()+ ".w" + tokens.nextToken();
System.out.println(OutFile);
File myfile=new File(OutFile);
FileWriter fos= new FileWriter(OutFile);
BufferedWriter bfos=new BufferedWriter(fos);

bfos.write(end);
bfos.flush();
bfos.close();





}
catch (Exception e)
{
System.out.println("Ming");
}
}
}

2010年4月30日 星期五

99/4/30 Java-型態轉換加總











import java.io.*;
import java.lang.Byte;
class Javaftirty
{
public static void main(String[] args)
{
int a,b,total;
System.out.println("Ming");
File mingfile = new File("mf.txt");
//Byte b = new Byte("1");
a=Integer.parseInt(args[0]);
b=Integer.parseInt(args[1]);
total=a+b;

try
{

FileOutputStream lym = new FileOutputStream(mingfile);
mingfile.createNewFile();
PrintStream lop = new PrintStream(lym);
lop.print(a +"+" + b + "=" + total);
//lym.write(b);
/*BufferedOutputStream yml = new BufferedOutputStream(lym);
PrintStream ps = new PrintStream(yml);
ps.println("12345");
ps.close();
lym.close();
yml.close();*/
}
catch (Exception e)
{
System.out.println("Ming");
}
}
}


資料來源
http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html
http://www.tcrc.edu.tw/question/30.pdf
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedOutputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/PrintStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Byte.html

2010年4月16日 星期五

99/04/16 Java 期中考



















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

public class TriangleMethod extends JFrame
implements ActionListener {

private JButton button;
private JPanel panel;

public static int b1,b2;
public static void main(String[] args) {

int a1,a2;

a1 = Integer.parseInt(args[0]);
a2 = Integer.parseInt(args[1]);
b1 = a1;
b2 = a2;

TriangleMethod frame = new TriangleMethod();
frame.setSize(350, 400);
frame.createGUI();

frame.setVisible(true);

}



private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout(new FlowLayout() );

panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 300));
panel.setBackground(Color.white);
window.add(panel);

button = new JButton("Press me");
window.add(button);
button.addActionListener(this);
}

public void actionPerformed(ActionEvent event) {
Graphics paper = panel.getGraphics();
drawLogo(paper, 10, 20);
//drawLogo(paper, 100, 100);
//drawTriangle(paper, 100, 10, 40, 40);
drawTriangle(paper, 10, 100, 20, 60);
}

private void drawLogo(Graphics drawingArea,
int xPos, int yPos) {
drawingArea.drawRect(xPos, yPos, b1, b2);//drawingArea.drawRect(xPos, yPos, 40, 40);
//drawingArea.drawRect(xPos, yPos, 20, 20);
}

private void drawTriangle(Graphics drawingArea,
int xPlace,
int yPlace,
int width,
int height) {
drawingArea.drawLine(xPlace, yPlace,
xPlace, yPlace + b1);
drawingArea.drawLine(xPlace, yPlace + b1,
xPlace + b2, yPlace + b1);
drawingArea.drawLine(xPlace, yPlace,
xPlace + b2, yPlace + b1);
}
}



注意事項
1.首先必須先把值改程可以用輸入的。
2.最直接的方法就是放外層共用。
3.並不是直接將值傳入,改程讓程式自動取值。

2010年4月8日 星期四

Java 矩形與三角形面積99/04/09









class Javafn
{
public static void main(String[] args)
{
int a,z,u;
String a1,a2;
a1=args[0];
a2=args[1];

Triangle ming1 = new Triangle();
u = ming1.Triangle(a1,a2);
System.out.println(u);

Rectangle ming2 = new Rectangle();
z = ming2.Rectangle (a1,a2);
System.out.println(z);

}
}

class Triangle
{
Triangle()
{
System.out.println("Triangle Area");
}

static int Triangle(String a1,String a2)
{
int a,b,c;
a=Integer.parseInt(a1);
b=Integer.parseInt(a2);
c=a*b/2;
return c;
}

}

class Rectangle
{
Rectangle()
{
System.out.println("Rectangle Area");
}
static int Rectangle(String a1,String a2)
{
int a,b,c;
a=Integer.parseInt(a1);
b=Integer.parseInt(a2);
c=a*b;
return c;
}

}

2010年4月1日 星期四

Java 99/04/02





class Javaft
{
public static void main(String[] args)
{
int a,z,u,b1,b2;
String a1,a2;
b1 = 3;
b2 = 4;
a1=args[0];
a2=args[1];
u=sum(b1,b2);
z = add (a1,a2);
System.out.println(u);
}
static int add(String a1,String a2)
{
int x,y,z;
x = Integer.parseInt(a1);
y = Integer.parseInt(a2);
z = x + y;
System.out.println(z);
return z;
}
static int sum(int b1,int b2)
{
int c;
c = b1 + b2;
return c;
}
}

注意事項:
1.不要重複宣告。
2.需要運算的變數一定要給值。
3.編譯後有讀值的程式一定要給值。
4.變數資料傳送注意型態的問題。

2010年3月26日 星期五

Java 99/03/26

Java string 轉 int

String → int
int i = Integer.parseInt(str);
或 int i = Integer.parseInt(str[, int radix])
int i = Integer.valueOf(str).intValue();
int → String
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;

註:Dobule、Float及Long的轉換方式相同。

參考網址:http://jhkao.blogspot.com/2008/10/javaint-string.html





注意事項:
1.執行時需輸入兩個值存入args[0],args[1]。

2010年3月18日 星期四

Java-sin&cos99/03/19












class Javauser
{
public static void main(String[] auto)
{
int x,y,i;
double pi,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,k;
pi=Math.PI;
x=1;
y=2;
a1=Math.cos(0);
a2=Math.cos(pi/4);
a3=Math.cos(pi/2);
a4=Math.cos(3*pi/2);
a5=Math.cos(2*pi);
b1=Math.sin(0);
b2=Math.sin(pi/4);
b3=Math.sin(pi/2);
b4=Math.sin(3*pi/2);
b5=Math.sin(2*pi);

System.out.println("Hello World!");
System.out.println("x+y="+(x+y));
System.out.println("PI="+pi);
System.out.println("cos(0)="+a1);
System.out.println("cos(pi/4)="+a2);
System.out.println("cos(pi/2)="+a3);
System.out.println("cos(3pi/2)="+a4);
System.out.println("cos(2pi)="+a5);
System.out.println("sin(0)="+b1);
System.out.println("sin(pi/4)="+b2);
System.out.println("sin(pi/2)="+b3);
System.out.println("sin(3pi/2)="+b4);
System.out.println("sin(2pi)="+b5);
}
}

本週學習使用eclipse編寫JAVA程式。

問題:安裝什麼軟體可以使用DOS編譯JAVA程式?該如何設定?
回答:安裝這套jdk,並且在環境變數的PATH中加入"jdk1.6.0_18"中,"JAVAC"檔案的路徑。

2010年3月12日 星期五

Java-聖誕樹99/03/12









class firstjava
{
public static void main(String[] args)
{
System.out.println("林郁銘");
System.out.println(" *");
System.out.println(" ***");
System.out.println(" *****");
System.out.println(" *******");
System.out.println(" *********");
System.out.println(" ***");
System.out.println(" ***");
System.out.println(" ***");
}
}

2010年2月25日 星期四

JAVA

http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html

1.為何why要選修這門課?(動機)
學東西,拿學分,對Java有興趣。

2.希望從這門課獲得那些知識?(目標)
如何用Java寫程式。

3.我要如何修習這一門課?(態度與方法)
時常操作增加熟悉度,跟同學討論研究。