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();
}
}