JAVA从入门到精通习题
1.编写一个程序,定义局部变量sum,并求出1+2+3+…+99+100之和,赋值给sum,并输出sum的值。
public class Test {
public static void main(String args[]){
int sum=0;
for(int i=1;i<=100;i++){
sum=sum+i;
}
System.out.println("1+2+3+...+100="+sum);
}
}
2.编写程序,要求运行后要输出long类型数据的最小数和最大数。
public class Test {
public static void main(String args[]){
Long m=Long.MAX_VALUE;
Long n=Long.MIN_VALUE;
System.out.println("long类型的最大数是:"+m+",最小数是:"+n);
}
}
3.编写程序,计算表达式“((123456799)>(976543213))? true : false”的值。
public class Test {
public static void main(String args[]){
Boolean result=((12345679*9)>(97654321*3))?true:false;
System.out.println(result);
}
}
4.编写程序,实现生成一随机字母(a-z,A-Z),并输出,运行结果如下图所示。
拓展知识。
⑴ Math.random()返回随机 double 值,该值大于等于 0.0 且小于 1.0。
例如: double rand = Math.random(); // rand 储存着[0,1) 之间的一个小数
⑵ 大写字母A~Z对应整数65 ~ 90、小写字母a~z对应整数97 ~ 122。
public class Test {
public static void main(String args[]){
int a=(int)(Math.random()*(122-65)+65);
if(a>=65&&a<=90||a>=97&&a<=122){
System.out.println((char)a);
}else{
System.out.println("无字母输出");
}
}
}
5.编写程序,实现产生(或输入)一随机字母(a-z,A-Z),转为大写形式,并输出。
public class Test {
public static void main(String args[]){
int a=(int)(Math.random()*(122-65)+65);
if(a>=65&&a<=90){
System.out.println("转换前:"+(char)a);
System.out.println("转换后:"+(char)a);
}else if(a>=97&&a<=122){
System.out.println("转换前:"+(char)a);
System.out.println("转换后:"+(char)(a-32));
}else{
System.out.println("无字母输出");
}
}
}
6.编写程序,使用程序产生1-12之间的某个整数(包括1和12),然后输出相应月份的天数(2月按28天算)。运行结果如下图所。
public class Test {
public static void main(String args[]){
int month=(int)(Math.random()*12+1);
switch (month){
case 1:
System.out.println("1月共有31天");
break;
case 2:
System.out.println("2月共有28天");
break;
case 3:
System.out.println("3月共有31天");
break;
case 4:
System.out.println("4月共有30天");
break;
case 5:
System.out.println("5月共有31天");
break;
case 6:
System.out.println("6月共有30天");
break;
case 7:
System.out.println("7月共有31天");
break;
case 8:
System.out.println("8月共有31天");
break;
case 9:
System.out.println("9月共有30天");
break;
case 10:
System.out.println("10月共有31天");
break;
case 11:
System.out.println("11月共有30天");
break;
case 12:
System.out.println("12月共有31天");
break;
default:
System.out.println("输出错误");
break;
}
}
}
7.编写程序,判断某一年是否是闰年。
import java.util.Scanner;
public class Test {
public static void main(String args[]){
System.out.println("请输入年份:");
Scanner scanner=new Scanner(System.in);
int year=scanner.nextInt();
if(year<0||year>3000){
System.out.println("输入错误");
}
if(year%4==0&&year%100!=0){
System.out.println(year+"年是闰年");
}else if(year%400==0){
System.out.println(year+"年是闰年");
}else{
System.out.println(year+"年不是闰年");
}
}
}
8.编写程序,对int[] a = {25, 24, 12, 76, 98, 101, 90, 28}数组进行排序。排序算法有很多种,读者可先编写程序实现冒泡法排序,运行结果如下图所示。(注:冒泡排序也可能有多种实现版本,本题没有统一的答案。)
public class Test {
public static void main(String args[]){
int[] a={25,24,12,76,98,101,90,28};
System.out.println("排序前数组a元素为:");
for(int i=0;i
System.out.print("a["+i+"]="+a[i]+" ");
}
System.out.println(" ");
for(int j=0;j
for(int k=0;k
if(a[k]>a[k+1]){
int temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
}
System.out.println("排序后数组a元素为:");
for(int m=0;m
System.out.print("a["+m+"]="+a[m]+" ");
}
}
}
9.定义一个包含name、age和like属性的Person类,实例化并给对象赋值,然后输出对象属性。
class Person{
String name;
int age;
String like;
public Person(String name,int age,String like){
this.name=name;
this.age=age;
this.like=like;
}
public void print(){
System.out.println("姓名:"+name+",年龄:"+age+",喜欢:"+like);
}
}
public class Test {
public static void main(String args[]){
Person p[]=new Person[3];
p[0]=new Person("张三",20,"猫");
p[1]=new Person("李四",56,"狗");
p[2]=new Person("王五",12,"猪");
for(int i=0;i
p[i].print();
}
}
}
10.定义一个book类,包括属性title(书名)和price(价格),并在该类中定义一个方法printInfo(),来输出这2个属性。然后再定义一个主类,其内包括主方法,在主方法中,定义2个book类的实例bookA和bookB,并分别初始化title和price的值。然后将bookA赋值给bookB,分别调用printInfo(),查看输出结果并分析原因。
class Book{
String title;
int price;
public Book(String title,int price){
this.title=title;
this.price=price;
}
public void printInfo(){
System.out.println("书名:"+title+",价格:"+price);
}
}
public class Test {
public static void main(String args[]){
Book bookA=new Book("老人与海",56);
Book bookB=new Book("百万富翁",70);
bookB=bookA;
bookA.printInfo();
bookB.printInfo();
}
}
11.定义一个book类,包括属性title(书名)、price(价格)及pub(出版社),pub的默认值是“天天精彩出版社”,并在该类中定义方法getInfo(),来获取这三个属性。再定义一个公共类BookPress,其内包括主方法。在主方法中,定义3个book类的实例b1,b2和b3,分别调用各个对象的getInfo()方法,如果“天天精彩出版社”改名为“每日精彩出版社”,请在程序中实现实例b1,b2和b3的pub改名操作。
class Book{
String title;
int price;
String pub;
public Book(String title,int price){
this.title=title;
this.price=price;
this.pub="天天精彩出版社";
}
public void getInfo(){
System.out.println("书名:"+title+",价格:"+price+",出版社:"+pub);
}
public void setPub(String pub){
this.pub=pub;
}
}
public class Test {
public static void main(String args[]){
Book b1=new Book("老人与海",56);
Book b2=new Book("百万富翁",70);
Book b3=new Book("海蒂",42);
b1.setPub("每日精彩出版社");
b1.getInfo();
b2.getInfo();
b3.getInfo();
}
}
12.编程实现,现在有如下的一个数组。
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为。
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5}
提示
需要确定新数组的大小,需要知道原始数组之中不为0的个数,可编写一个方法完成;根据统计的结果开辟一个新的数组;将原始数组之中不为0的数据拷贝到新数组之中。)
public class Test {
public static void main(String args[]){
int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
for(int j:oldArr){
System.out.print(j+" ");
}
System.out.println(" ");
int count=0;
for(int i=0;i
if(oldArr[i]==0){
count=count+1;
}
}
System.out.println("0的个数:"+count);
int[] newArr=new int[oldArr.length-count];
int m=0;
for(int k=0;k
if(oldArr[k]!=0){
newArr[m]=oldArr[k];
m++;
}
}
for(int n:newArr){
System.out.print(n+" ");
}
}
}
13.编程实现,要求程序输出某两个整数之间的随机数。
import java.util.Scanner;
public class Test {
public static void main(String args[]){