1、 long型別可表現的最大值為9223372036854775807,若欲求得此值的平方
,且精準度不受到影響。試寫一程式使用陣列來解決此一問題(提示:使用
int陣列,一個元素代表一個位數)。
2、
程式1
public class ConstructorExp {
public int num1; //number1
public int num2; //number2
public int multply; //multiply result
public ConstructorExp(int i1,int i2) { //Constructor
this.num1 = i1; //Setting num1 = i1
this.num2 = i2; //Setting num2 = i2
}
//Compute multiple's result
public void multiple(){
this.multply = this.num1*this.num2; //multiply's result
//return this.multply+"";
}
//Print result data
public void printData(){
System.out.println("Print data of multply is "+this.num1+"*"+this.num2+" = "+this.multply);
}
public static void main (String[] args) {
ConstructorExp cep = new ConstructorExp(5,8); //Creat New ConstructorExp Object cep
cep.multiple(); //Compute multiply
cep.printData(); //Print result
ConstructorExp cep2 = new ConstructorExp(9,7); //Creat New ConstructorExp Object cep2
cep2.multiple(); //Compute multiply
cep2.printData(); //Print result
}
}
程式2
public class abc {
public abc(int i) {
}
public static void main (String[] args) {
ConstructorExp cep = new ConstructorExp(8,8);
cep.multiple();
cep.printData();
}
}
參考上面2個程式檔,用建構子(constructor)做出99乘法表,(並不用列出全部的
99乘法),舉例來說,給予這個程式一個範圍的值如(3,8),則印出
1*1~1*8、2*1~2*8、3*1~3*8,這個範圍的99乘法即可。
3、定義一個朋友(Friend)類別,屬性要有
姓名(name)、行動電話(mobile)、電子信箱(email)和流水編號(num)
流水編號會從1開始,依物件建立的順序自動設定。
(提示:流水編號可以由一類別屬性控制)
以上三題請幫忙,謝謝
2006-12-08 09:23:22 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
第2題題目我有做點修改,再請高手幫忙一下,謝謝
2006-12-12 06:21:59 · update #1
還有2天就發問到期,我想把點數送出去,
第2題題目我有修改一些,請幫忙一下,
第3題程式好像有點問題,不知哪裡錯誤,
程式碼是全都放在一起,還是分開,
若放在一起,哪個是第1,第2,第3
請幫忙,謝謝。
2006-12-16 05:53:31 · update #2
再次請高手幫忙 謝謝
2006-12-16 17:32:01 · update #3
給ωετμοφντ
第三題為什麼執行結果都是 1 ???
2006-12-18 16:23:18 · update #4
請參考我的做法,並分存成三個檔案。第二題我有用到 ConstructorExp 這個類別,所以要將其放在同一個資料夾下。
第一題
public class OverLong {
public static int[] numToArray(long l) {
int[] ary = new int[20];
long tmp = l;
for (int i = 0; i < ary.length; i++) {
ary[i] = (int)(tmp % 10);
tmp /= 10;
}
return ary;
}
public static int[] multiple(int[] x, int[] y) {
int[] result = new int[x.length + y.length + 2];
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < y.length; j++) {
result [i+j] += x[i] * y[j];
}
}
for (int i = 0; i < result.length-1; i++) {
result[i+1] += result[i]/10;
result[i] %= 10;
}
return result;
}
public static void printNum(int[] ary) {
boolean start = false;
for (int i = ary.length-1; i >= 0; i--) {
if (ary[i] != 0) start = true;
if (start) System.out.print(ary[i]);
}
}
public static void main(String[] args) {
long l = 9223372036854775807L;
int[] ary = numToArray(l);
int[] result = multiple(ary, ary);
printNum(result);
}
}
第二題
public class Exp {
int x;
int y;
public Exp(int x, int y) {
this.x = x;
this.y = y;
}
public void print() {
ConstructorExp ce = null;
for (int i = 1; i <= x; i++) {
for (int j = 1; j <= y; j++) {
ce = new ConstructorExp(i, j);
ce.multiple();
ce.printData();
}
}
}
public static void main(String[] args) {
Exp exp = new Exp(3, 8);
exp.print();
}
}
2006-12-18 15:59:29 補充:
第三題
public class Friend {
String name;
String mobile;
String email;
int num;
static int cls_num = 1;
public Friend(String s1, String s2, String s3) {
name = s1;
mobile = s2;
email = s3;
num = cls_num ;
}
}
2006-12-18 16:03:12 補充:
第三題請加入以下程式碼來驗證流水號是否正確
public static void main(String[] args) {
Friend f1 = new Friend("A", "123", "abc");
Friend f2 = new Friend("B", "456", "def");
System.out.println(f1.num);
System.out.println(f2.num);
}
2006-12-20 00:25:17 補充:
不知為何 Friend 的建構子中最後一行錯誤,
請改成
num = cls_num ;
2006-12-20 00:26:01 補充:
奇怪,又錯了。試試看這個
num = cls_num ;
2006-12-20 00:27:54 補充:
算了,奇摩知識的文字編輯功能有問題,我還是寫成兩行。
num = cls_num;
cls_num = 1;
2006-12-20 00:28:43 補充:
好像不能兩個運算元放在一起,像 或 =。
num = cls_num;
cls_num = cls_num 1;
2006-12-20 00:30:17 補充:
原來是+(加號)無法顯示出來。我用國字表示,請你換成半形的加號。
num = cls_num加加;
2006-12-18 10:56:48 · answer #1 · answered by ? 7 · 0⤊ 0⤋
第二題的程式2,程式1不用改
public class abc {
ConstructorExp ecp;
int x, y;
public abc(int x, int y) {
this.x = x;
this.y = y;
}
public void x_To_y(){
while(this.x <= this.y){
for(int count = 1; count <= 9; count++){
ecp = new ConstructorExp(this.x, count);
ecp.multiple();
ecp.printData();
}
System.out.println("");//空一格
this.x++;
}
}
public static void main (String[] args) {
abc Count_x_y = new abc(3, 7);//在這設定從幾印剩到幾(從3乘到7)
Count_x_y.x_To_y();
}
}
2006-12-11 21:50:45 補充:
第一題
import java.math.BigInteger;
class BigInt{
BigInt(BigInteger val){
System.out.println(val.pow(2));
}
public static void main(String[] args){
new BigInt(new BigInteger("9223372036854775807"));
}
}
2006-12-11 21:52:21 補充:
class Friend{//朋友類別,設定朋友的基本資料
private String name;
private String phone;
private String mail;
Friend(String name, String phone, String mail){
this.name = name;
this.phone = phone;
this.mail = mail;
}
String getData(){
return name ", " phone ", " mail;
}
}
2006-12-11 21:55:24 補充:
import java.util.ArrayList;
class Friends_List{
ArrayList
Friends_List(ArrayList
this.FriendList = fl;
}
void print_friendList(){
for(Friend o : FriendList){
System.out.print("流水號 " FriendList.indexOf(o) ": ");
System.out.println(o.getData());
}
}
}
2006-12-11 21:57:46 補充:
class addFriend{
public static void main(String[] args){
ArrayList
FriendList.add(new Friend("jony", "02-25421555", "jony@yah.com"));
new Friends_List(FriendList).print_friendList();
}
}
2006-12-11 22:00:37 補充:
補充的朋友類別開始往下,都是第三題的。
我覺得寄原始碼給你看得比較清楚~~~~
因為最一後個補充,我刪了一些
在FriendList.add(new Friend("jony", "02-25421555", "jony@yah.com"));
你可以自已加朋友進去,就在new Friend裡的三個參數
自已加
2006-12-11 22:02:19 補充:
第三題的流水號的方式
我是用ArrayList去存Friend class的方式
每加一位朋友,就自動在ArrayList裡新增嘍~~
ArrayList的索引值就同等於流水號嘍~~~~
2006-12-11 16:50:15 · answer #2 · answered by ? 2 · 0⤊ 0⤋