天耀18期 – 07.面向對象-繼承、訪問權限【作業】

1. 寫一個類Param,聲明四個成員變量a、b、c、d,分別賦予四種訪問權限。

(1)試驗在同一個包中的另一個類裏能訪問哪幾個變量?

(2)試驗在不同包中的另一個類裏能訪問哪幾個變量?

(3)試驗在不同包中、用Param派生一個子類,看子類能訪問哪幾個變量?

 package FirstBag;

public class Param {

public int a=1;

protected int b=2;

 int c=3;

 private int d=4;

 void test () {

System.out.println("輸出a的值"+a);

System.out.println("輸出b的值"+b);

System.out.println("輸出c的值"+c);

System.out.println("輸出d的值"+d);

 }

}

package FirstBag; //在同一個 包中的一個類

public class Main {

 public static void main(String[] args) {

Param pr=new Param();

System.out.println("輸出a的值"+pr.a);

System.out.println("輸出b的值"+pr.b);

 System.out.println("輸出c的值"+pr.c);

 System.out.println("輸出d的值"+pr.d);

//private 不能在同一個包中不同文件中使用

}

 }

package FirstBag1;

/** * 不同包中的一個子類 * @author LENOVO * */

import FirstBag.Param;

public class ParamSon extends Param {

void test () {System.out.println("輸出a的值"+a);

//在不同包中的子類中,public 可以使用 System.out.println("輸出b的值"+b);

//在不同包中的子類中,protected 可以使用 System.out.println("輸出c的值"+c);

//在不同包中的子類中,友好型不 可以使用 System.out.println("輸出d的值"+d);

//在不同包中的子類中,private不 可以使用

 }

 }

ackage FirstBag1; import FirstBag.Param;

 //在不同包中的一個類

 public class Main {

public static void main(String[] args) {

Param pr1=new Param();

System.out.println("輸出a的值"+pr1.a);

//在不同包中一個普通類,public 可以使用

System.out.println("輸出b的值"+pr1.b); //在不同包中一個普通類,protected 不可以使用 System.out.println("輸出c的值"+pr1.c);// 在不同包中一個普通類,友好型 不可以使用 System.out.println("輸出d的值"+pr1.d);//在不同包中一個普通類,private不 可以使用

 }

}

2. 題目:有一分數序列:2/1,3/2,5/3,8/5,13/8 ... 求出這個數列的前20項之和。

package FirstBag; //類方法 求有一分數序列:2/1,3/2,5/3,8/5,13/8 ... 求出這個數列的前20項之和。 public class Add {

int i;

float sum=0;

void add () {

int mem=2,dmin=1;

 for (i=1;i<=20;i++) {

sum+=mem/dmin*1.0;

mem+=dmin; dmin=mem;

}

System.out.println("前二十項的結果是:"+sum);

}

 }

 package FirstBag; //調用類方法 使用主方法得出結果

public class Main1 {

public static void main(String[] args) {

Add ad=new Add(); ad.add();

}

 }

3. 寫一個工具類,提示用戶,1爲普通話,2 for English ,判斷用戶輸入的數據,根據輸入的數據做出對應的響應。用戶輸入1,則提示,您好,歡迎使用本系統;如果輸入2,則提示,Hello, welcome to use this system。 package FirstBag2;

 //類方法 進入系統時提示選則語言

public class Remind {

 //提示1和2所代表的語言

void remind() {

System.out.println("如果您輸入1,則爲普通話,if you enter 2, for English ");

 }

 // 1和2 所選擇的語言

void remind1(int a) {if (a==1) {System.out.println("您好,歡迎使用本系統");

}

else if (a==2) {

System.out.println("Hello, welcome to use this system ");

}

else {System.out.println("您輸入的數據有錯誤");

}

}

}

//主方法

package FirstBag2;

 import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Remind rm=new Remind(); rm.remind();

// 讓用戶輸入數字 Scanner scanner=new Scanner(System.in);

System.out.println("請輸入1或者2");

int s=scanner.nextInt(); rm.remind1(s);

 }

}

4. 寫一個工具類,打包到tools裏,計算如下題目,兩列火車相向而行,問:多長時間後兩車相遇。用戶輸入已知信息:第一列車速度(千米/小時),第二列車速度(千米/小時),兩車距離(千米)。在另一個類裏調用該類,測試是否正確。

 package tools;

 /** * 類方法 */

import java.util.Scanner;

 public class TrainMeetUseTime1 {

void enterNum() {

Scanner scanner=new Scanner(System.in );

System.out.println("請輸入第一列車速度(千米/小時)");

float v1=scanner.nextFloat();

System.out.println("請輸入第二列車速度(千米/小時)");

 float v2=scanner.nextFloat();

 System.out.println("請輸入兩車之間的距離(千米)");

float s=scanner.nextFloat();

 float time=s/(v1+v2);

 System.out.println("兩輛火車相遇所用的時間是:"+time);

 }

}

package tools;

//主方法

public class Main {

public static void main(String[] args ) {

TrainMeetUseTime1 tmut=new TrainMeetUseTime1();

tmut.enterNum();

}

}

5. 寫一工具類,判斷輸入的字符(char)是否爲數字(使用ASCII碼判斷)類型,在另一個類裏引入該類,然後調用工具類判斷。要求打包到tools裏。

 package tools;

import java.util.Scanner;

public class JudgeNumber {

void judgeNumber() {

Scanner scanner=new Scanner(System.in);

 System.out.println("請輸入一個數據");

 char s=scanner.next().charAt(0);

 if (s>=47&&s<=58) {

System.out.println("您輸入的是一個數字");

} else {System.out.println("您輸入的不是一個數字");

}

}

}

package tools;

public class Main1 {

 public static void main(String[] args) {

JudgeNumber jn=new JudgeNumber();

jn.judgeNumber();

 }

}

6. 題目:打印楊輝三角

1

1    1  

1    2    1

1    3    3    1

1    4    6    4    1

1    5   10   10    5    1

 

6. 

 package tools;

import java.util.Scanner;

public class Main2 {

 public static void main(String[] args) {

printYFTriangle();

}

 public static void printYFTriangle(){

 System.out.println("how many lines you want:");

Scanner in = new Scanner(System.in);

 int lines = in.nextInt();

int[] a = new int[lines + 1];

int previous = 1;

for (int i = 1; i <= lines; i ++){

 for (int j = 1; j <= i; j++)

{

 int current = a[j];

 a[j] = previous + current;

previous = current;

System.out.print(a[j] + " ");

 }

System.out.println();

 }

}

}

 

 

 

 

7. 題目

吸血鬼數字是指位數爲偶數的數字,可以由一對數字相乘得到,而這對數字的位數是原數字的一半位數,並且由組成原數字的各個位數組成,以兩個0結尾的數字不是吸血鬼數字。

例如:1260 = 21 * 60    1827 = 21 * 87    2187= 27 * 81  求所有四位吸血鬼數字

import java.util.Arrays;

/**
* 吸血鬼數字,高效率版本. 一個4位數字,可以拆分2個2位數數字的乘積,順序不限。 比如 1395 =15 * 93

*/
public class VampireNumber {
public static void main(String[] arg) {
String[] str1, str2;
int sum = 0;
int from;
int to;
int val;
int count = 0;
// 雙重循環窮舉
for (int i = 10; i < 100; i++) {
// j=i+1避免重複
from = Math.max(1000 / i, i + 1);
to = Math.min(10000 / i, 100);
for (int j = from; j < to; j++) {
val = i * j;
/*
* 假設val = 1000a + 100b + 10c + d, 因爲滿足val = x * y, 則有x = 10a + b, y = 10c + d
* 則val - x - y = 990a + 99b + 9c = 9 * (110a + 11b + c),
*所以val - x - y能被9整除。 所以滿足該條件的數字必定能被9整除,所以可以直接過濾其他數字。
*/
if (val % 100 == 0 || (val - i - j) % 9 != 0) {
continue;
}
count++;
str1 = String.valueOf(val).split("");
str2 = (String.valueOf(i) + String.valueOf(j)).split("");
Arrays.sort(str1);
Arrays.sort(str2);
if (Arrays.equals(str1, str2)) {// 排序後比較,爲真則找到一組
sum++;
System.out.println("第" + sum + "組: " + i + "*" + j + "=" + val);
}
}
}
System.out.println("共找到" + sum + "組吸血鬼數");
System.out.println(count);
}
}

結果:

1組: 15*93=1395
2組: 21*60=1260
3組: 21*87=1827
4組: 27*81=2187
5組: 30*51=1530
6組: 35*41=1435
7組: 80*86=6880
共找到7組吸血鬼數
232

 

 

//未運行

public class XiXueGuiJudge {
public XiXueGuiJudge()
{


}


void main(){

//輸入數據
Scanner scanner=new Scanner(System.in);
System.out.println("請輸入一個數據");
int s=scanner.nextInt();


int i,a,b,c,d,num=s;
a=num%10;
num/=10;
b=num%10;
num/=10;
c=num%10;
num/=10;
d=num%10;
for (i=1000;i<10000;i++)
{
if ( (a*10+b)*(b*10+c)==s||
(a*10+b)*(c*10+d)==s||
(b*10+a)*(b*10+c)==s||
(b*10+a)*(c*10+d)==s||
(a*10+c)*(b*10+d)==s||
(c*10+a)*(d*10+b)==s||
(c*10+a)*(b*10+d)==s||
(a*10+d)*(b*10+c)==s||
(a*10+d)*(c*10+b)==s||
(d*10+a)*(b*10+c)==s||
(d*10+a)*(c*10+b)==s

)
{System.out.println(i+"是一個吸血鬼數字");}



}





}





package xiXueGui;

public class Main {
public static void main(String[] args)
{XiXueGuiJudge xx=new XiXueGuiJudge();
xx.main();



}
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章