java 基础程序练习题
1.新建Java工程/项目
2.第一个Java程序
package day01;
public class lianxi {
public static void main(String[] str) {
System.out.println("hallo world!");
}
}
3.字符串相加输出
package day01;
public class lianxi {
public static void main(String[] str) {
System.out.println("你"+"好");
System.out.println("你好"+5+5);
System.out.println(5+5+"你好"+5+5);
System.out.println(5+5+"你好"+(5+5));
System.out.println(0x100);//十六进制
System.out.println(0100);//八进制
System.out.println(0b1111);//二进制
System.out.println(false);
System.out.println(true);
}
}
输出:
你好
你好55
10你好55
10你好10
256
64
15
false
true
4.数据类型转换
package day01;
public class lianxi {
public static void main(String[] args) {
int b=2;
int c=17;
byte a=(byte)(b+c);
System.out.println(a);
float x=17.7f;
float y=34.87f;
double z=x+y;
String str = String.format("%.2f", z);//保留2位小数
System.out.println(str);
}
}
5.演示ASCII码
package day01;
public class lianxi {
public static void main(String[] args) {
char a='a';//a的ASCII码中对应的十进制数是97
int b=a+1;
System.out.println(b);
char c='0';//这的‘0’不是数字0,char型的字符‘0’在ASCII对应的十进制是48.
System.out.println(c);
System.out.println(c+1);
}
}
输出:98
0
49
6.从键盘输入一个四位数,将该数字反转输出,再与原数相加后输出
package day01;
import java.util.Scanner;
public class hallo{
public static void main(String[] st){
Scanner s=new Scanner(System.in);
int x=s.nextInt();
int a=x/1000; //取出X的千位
int b=x/100%10; //取出X的百位
int c=x/10%10; //取出X的十位
int d=x%10; //取出X的个位
int y=d*1000+c*100+b*10+a;
system.out.println("翻转以后的数为:")
system.out.println(""+d+c+b+a);
system.out.println("翻转以后的数与原来的数之和为:")
System.out.println(y+x);
}
}
7.&&(短路与)与||(短路或)的应用
package day01;
import java.util.Scanner;
public class hallo{
public static void main(String[] st){
int a=10;
boolean b= a>100 && ++a>0; //因为a>100为假,所以++a就不会被执行,a的结果还是10
boolean c= a<100 || ++a>0; //因为a<100为真,所以++a就不会被执行,a的结果还是10
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
结果:10
false
true
8.三元运算符的应用 ( 数据类型 变量名 = 布尔类型表达式?值1:值2)
例题:获取三个数的最大值
package day01;
public class hallo{
public static void main(String[] st){
int a=1;
int b=2;
int c=3;
int x=a>b?(a>c?a:c):(b>c?b:c);
System.out.println("最大值为"+x);
}
}
输出:最大值为3
9.交换两个变量的值
法一:
package day01;
public class hallo{
public static void main(String[] st){
int a=1;
int b=2;
int c;
c=a;
a=b;
b=c;
System.out.println(a);
System.out.println(b);
}
}
法二:
package day01;
public class hallo{
public static void main(String[] st){
int a=1;
int b=2;
a=a+b;
b=a-b;
a=a-b;
System.out.println(a);
System.out.println(b);
}
}
法三:
package day01;
public class hallo{
public static void main(String[] st){
int a=1;
int b=2;
a=(a+b)-(b=a);
System.out.println(a);
System.out.println(b);
}
}
法四:^ :逻辑运算符 异或(相同为假,不同为真)
package day01;
public class hallo{
public static void main(String[] st){
int a=1;
int b=2;
a=a^b;
b=a^b;
a=a^b;//比较二进制,如果相同则为0,不相同则为1。
System.out.println(a);
System.out.println(b);
}
}
10.键盘录入Scanner类
10.1使用步骤:
1.定义变量,并相应类型的对象赋值给变量:
数据类型 变量名 = new 数据类型();
如:Scanner scanner = new Scanner(System.in);
2.导包:(快捷键:Ctrl+1)
使用import导包,告诉JVM从哪里去找Scanner类
3.调用Scanner对象方法:(快捷键Ctrl+1或Ctrl+shift+1)
变量名.方法名();
10.2例题
package day01;
import java.util.Scanner;
public class hallo{
public static void main(String[] st){
Scanner a = new Scanner(System.in);
System.out.println("请输入您的体重(kg)");
double weight=a.nextDouble();
System.out.println("请输入您的身高(m)");
double hight=a.nextDouble();
double BMI=weight/(hight*hight);
System.out.println("您的体质指数BMI为"+BMI);
String m= BMI<=23.9&BMI>=18.5?"体质指标正常":"体质指标不正常";
System.out.println(m);
}
}
输出:请输入您的体重(kg)
65
请输入您的身高(m)
1.65
您的体质指数BMI为23.875114784205696
体质指标正常
10.3next()与nextLine的区别
11.if循环的练习
package day03;
import java.util.Scanner;
public class lianxi02 {
public static void main(String[] agr) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
if (a == 1) {
System.out.println("今天是星期一");
} else if (a == 2) {
System.out.println("今天是星期二");
} else if (a == 3) {
System.out.println("今天是星期三");
} else if (a == 4) {
System.out.println("今天是星期四");
} else if (a == 5) {
System.out.println("今天是星期五");
} else if (a == 6) {
System.out.println("今天是星期六");
} else if (a == 7) {
System.out.println("今天是星期天");
} else {
System.out.println("时间不合理");
}
}
}
输入:4
输出:今天是星期四
12. 根据用户输入的不同成绩(0~100),给出相应的提示:优秀,良好,及格,不及格(if…else)
package day03;
import java.util.Scanner;
//根据用户输入的不同成绩(0~100),给出相应的提示:优秀,良好,及格,不及格
//100-90为优秀 89-80为良好 79-60 为及格 <60为不及格
public class lianxi04 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int cj=s.nextInt();
if( cj<=100 && cj>=90) {
System.out.println("优秀");}
else if( cj<=89 && cj>=80) {
System.out.println("良好");}
else if( cj<=79 && cj>=60) {
System.out.println("及格");}
else if( cj<=60) {
System.out.println("不及格");
}
else {
System.out.println("成绩输入格式不正确");
}
}
}
13.闰年的判断(if…else)
package day03;
import java.util.Scanner;
/**
* 闰年的判断。
*
*
*/
public class lianxi05 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int year=s.nextInt();
if((year%4==0&&year%100!=0)||(year%400==0)) {
System.out.println("这是一个闰年");
}else {
System.out.println("这不是一个闰年");
}
}
}
14.水仙花数的判断(if…else)
package day03;
import java.util.Scanner;
/*水仙花数的判断
* 说明:所谓的水仙花数是指一个三位数,其各个位数字的立方和等于该数本身。
举例:153就是一个水仙花数。 153 = 1*1*1 + 5*5*5 + 3*3*3
*/
public class lianxi06 {
public static void main(String[] age) {
Scanner s = new Scanner(System.in);
int num=s.nextInt();
if(num>=100 && num<=999) {
int a=num/100;
int b=num/10%10;
int c=num%10;
if(num==a*a*a+b*b*b+c*c*c) {
System.out.println("这个数是水仙花数");
}
else{System.out.println("这个数不是水仙花数");
}
}
}
}
15.求1~10的和(for)
package day03;
public class lianxi07 {
public static void main(String[] agr) {
int sum=1;
for(int x=1;x<=10;x++) {
sum*=x;
}
System.out.println(sum);
}
}
16.求出100----1000之间的水仙花数(for)
package day03;
// 求出100----1000之间的水仙花数
public class lianxi08 {
public static void main(String[] args) {
for(int x=100;x<1000;x++) {
int a=x/100;
int b=x/10%10;
int c=x%10;
if(x==a*a*a+b*b*b+c*c*c) {
System.out.println(x);
}
}
}
}
17.输出1到100之间能被3整除的数(for)
package day03;
/*
* 输出1到100之间能被3整除的数
* 思路:
* 1 产生 1到100之间的整数
* 2 判断这个数能否被3整除
* */
public class lianxi09 {
public static void main(String[] age) {
for(int i=1;i<=100;i++) {
if(i%3==0) {
System.out.println(i);
}
}
}
}
18.打印1到100中非4的倍数的数字(continue)
package day03;
// 打印1到100中非4的倍数的数字(使用continue)
public class lianxi14 {
public static void main(String[] args) {
for(int i=1;i<=100;i++) {
if(i%4==0)continue;
System.out.println(i);
}
}
}
19.输出 1 到 100 之间能被 3 整除的前 5个数(for)
package day03;
// 2.输出 1 到 100 之间能被 3 整除的前 5个数
public class lianxi11 {
public static void main(String[] args) {
int count=0;
for(int i=1;i<100;i++) {
if(i%3==0) {
System.out.println(i);
count++;
}
if( count==5)break;
}
}
}
20.打印1到10,遇到4的倍数程序自动退出 (for)
package day03;
/*打印1到10,遇到4的倍数程序自动退出
*/
public class lianxi12 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 4 == 0) {
break;
}
System.out.println(i);
}
}
}
21.打印1到10中的偶数(使用continue)
package day03;
// 打印1到10中的偶数(使用continue)
public class lianxi13 {
public static void main(String[] args) {
for(int i=1;i<=10;i++) {
if(i%2==1) {
continue;
}
System.out.println(i);
}
}
}
22.打印1到100中非4的倍数的数字(使用continue)
package day03;
// 打印1到100中非4的倍数的数字(使用continue)
public class lianxi14 {
public static void main(String[] args) {
for(int i=1;i<=100;i++) {
if(i%4==0)continue;
System.out.println(i);
}
}
}
23.找出n这个数以内的所有素数。(for)
package day03;
import java.util.Scanner;
//找出n这个数以内的所有素数。
/*说明:素数是只能被1和它本身整除的数,1不是素数。
*/
public class lianxi15 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n=s.nextInt();
for(int i=2;i<=n;i++) {
for(int x=2;x<=i;x++) {
if(i%x==0) {
if(i==x) {
System.out.println(i);
}else {break;}
}
}
}
}
}
24.鸡兔同笼问题(for)
package day03;
/**
* @author TaoTianye
*鸡兔同笼问题:50个头,120个脚 多少鸡? 多少兔?
*/
public class lianxi16 {
public static void main(String[] args) {
for ( int a=1;a<=50;a++) {
int b= 50-a;
if(2*a+4*b==120) {
System.out.println("鸡的数量为:"+a);
System.out.println("兔的数量为:"+b);
break;
}
}
}
}
25.输入两个数,找出最大公约数(for)
package day03;
import java.util.Scanner;
/**
* @author TaoTianye
*
*输入两个数,找出最大公约数
*(最大公约数是指能够同时整除x与y的最大整数)
*/
public class lianxi17 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int x=s.nextInt();
int y=s.nextInt();
int min= x<y?x:y;
for(int a=min;a>0;a--) {
if(x%a==y%a) {
System.out.println("最大公约数为:"+a);
break;
}
}
}
}
26.输入两个数,找出最大公倍数
package day03;
import java.util.Scanner;
/**
* @author TaoTianye
*
*输入两个数,找出最大公倍数
*(最大公倍数是指能够同时被x与y整除的最大整数)
*/
public class lianxi17 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int x=s.nextInt();
int y=s.nextInt();
int min= x>y?x:y;
for(int a=min;a>0;a--) {
if(a%x==a%y) {
System.out.println("最大公倍数为:"+a);
break;
}
}
}
}
输入:12
2
输出:最大公倍数为:12
27.输出1到100之间能被3整除的前5个数(while)
package day05;
/**
* @author TaoTianye
* 输出1到100之间能被3整除的前5个数(while)
*/
public class lianxi01 {
public static void main(String[] args) {
int a = 1;
int b=0;
while (a <= 100) {
if(a%3==0) {
System.out.println(a);
b++;
}
a++;
if(b==5) {
break;
}
}
}
}