初学问题20道
package com.bao;
import java.math.BigDecimal;
import java.util.Scanner;
public class bao {
/*
1,键盘输入一个分数,按不同的分数段将其评定为A,B,C,D,E五个档次之一。
public static void main(String[] args){
System.out.println("欢迎进入查询,如想结束,请按“666“结束查询!!");
int c=0;
for(;;c++){
System.out.println("请输入第"+(c+1)+"个数字:");//提示输入一个数字
Scanner a=new Scanner(System.in); //键盘输入数字
int b=a.nextInt(); //提取键盘输入的数字;
if(b==666){ System.err.println("成绩录入结束!!!"); break;} //break 退出循环
else if(b>100 || b<0)System.err.println("输入分数有误,请重新输入");
else if(b>=90 && b<=100) System.out.println(b+"属于最优等分数");
else if(b>=80 && b<90) System.err.println(b+"属于优等分数");
else if(b>=70 && b<80) System.err.println(b+"属于一般分数");
else if(b>=60 && b<70) System.err.println(b+"属于及格分数");
else if(b>=0 && b<60) System.err.println(b+"属于最差分数");
}
}
2,键盘输入一个年份判断是否是闰年。
(能被4整除却不能被100整除或能被400整除的年份是闰年)
public static void main(String[] args){
System.out.println("欢迎进入查询,如想结束,请按两个“00“结束查询!!");
for(;;){
int d=0;
System.out.println("请输入年份判断的:");
Scanner c=new Scanner(System.in);
int m=c.nextInt();
if(m==0){
System.err.println("没有公元0年 ,请重新输入:");
System.out.println("请输入年份判断的:");
Scanner a=new Scanner(System.in);
d=a.nextInt();
if(d%4==0 && d%100!=0 || d%400==0){
System.err.println(d+"是闰年!!!");
}
else System.err.println(d+"不是闰年");
}
else{
d=m;
if(d%4==0 && d%100!=0 || d%400==0){
System.err.println(d+"是闰年!!!");
}
else {
System.err.println(d+"不是闰年");
}
}
}
}
//缺点:没有退出程序机制。
*
*
*3,产生一个1--100的随机数N,求1-N的和,
public static void main(String[] args){
int sun=0;
for(int i=0;i<10;i++){
int b=(int)(Math.random()*100+1);
//math.random 产生的随机数是double类型
System.err.println(b);
sun+=b;
}
System.err.println("总数之和是"+sun);
}
//没有每次相加的数,显示一个完整的形式的算式
*
4,产生一个1--100的随机数N,求1--N之间有多少个偶数,他们的和是多少?
public static void main(String[] args){
int sun=0;
int count=0;
int b=(int)(Math.random()*100+1);
count=b/2;
System.err.println("随机自然数是"+b);
System.err.println("1到"+b+"之间的偶数总共有"+count);
for(int i=1;i<=b;i++){
if(i%2==0){
sun+=i;
}
}
System.err.println("1到"+b+"之间所有的偶数之和是"+sun);
}
5,求1--100的阶乘。
public static void main(String[] args){
double sun=1; //注意数据类型的范围大小。
for(int i=1;i<=100;i++){
sun=sun*i;
}
System.err.println("1到100的阶乘是"+sun);
}
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。
双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。
float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。
BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,
而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,
特别是带有参数的对象。
public static void main(String[] args) {
BigDecimal bg = new BigDecimal(1L);
int i = 1;
while(i <= 10){
bg = bg.multiply(new BigDecimal(i++));
}
System.err.println(bg);
System.out.println(bg.toString());
}
6,求1--100所有可以被3整除的数子,他们有多少个?
public static void main(String[] args){
int sun=0;
int count=0;
System.out.println("1--100之间能被3整除的数分别数:");
for(int i=1;i<=100;i++){
if(i%3==0){
System.err.print(i+" ");
count++;
sun+=i;
}
}
System.out.println("1--100之间能被3整除的数共有"+count+"个");
System.out.println("1--100之间能被3整除的数的和是"+sun);
}
7,求100以内所有能被3整除但不能被5整除的数,有多少个?
public static void main(String[] args){
int sun=0;
int count=0;
System.out.println("1--100之间能被3整除不能被5整除的数分别数:");
for(int i=1;i<=100;i++){
if(i%3==0 && i%5!=0){
System.err.print(i+" ");
count++;
sun+=i;
}
}
System.out.println("1--100之间能被3整除不能被5整除的数共有"+count+"个");
System.out.println("1--100之间能被3整除不能被5整除的数的和是"+sun);
}
8,求所有水仙花数,它每位上的数子的3次幂之和等于它本身。(一定是一个三位数)
*
public static void main(String[] args){
for(int i=100;i<=999;i++){
int ge=i%10;
int shi=i%100/10;
int bai=i/100; //int bai=i%1000/100
int b=(int)(Math.pow(ge, 3)+Math.pow(shi, 3)+Math.pow(bai, 3));//那个数的几次方
if(b==i){
System.out.println("三位数的水仙花数有"+i);
}
}
}
*
*9,有一个三位数,他的各位数字之和的11倍恰好等于他本身,写编程求这个三位数。
public static void main(String[] args){
for(int i=100;i<=999;i++){
int ge=i%10;
int shi=i%100/10;
int bai=i/100; //int bai=i%1000/100
int b=(ge+shi+bai)*11;//那个数的几次方
if(b==i){
System.out.println("三位数各位数之和的十一倍等于它本身的是"+i);
}
}
}
10,一个两位数X,将他的个位数字与十位数字对调后得到一个新的数Y,此时Y比X大36,写编程求这个两位数。
public static void main(String[] args){
for(int i=10;i<=99;i++){
int ge=i%10;
int shi=i%100/10;
int b=(ge*10+shi)-36;
if(b==i){
System.out.println("这个数是"+i);
}
}
}
11,把整数3025从中间剪开分为30和25两个数,此时再将这两数之和平方,(30+25)的平方=3025计算结果又等于原来的数,求所有符合条件的四位数。
public static void main(String[] args){
for(int i=1000;i<=9999;i++){
int b=i%100;
int c=i/100;
if((b+c)*(b+c)==i){ //里面的条件也可写成 math。pow((b+c),2)
System.out.println("满足条件的四位数有:"+i);
}
}
}
12,求1000以内所有不能被7整除的数之和。
public static void main(String[] args){
int sun=0;
for(int i=0;i<1000;i++){
if(i%7!=0){
sun+=i;
}
}
System.out.println("数之和是"+sun);
}
13,用循环实现:
系统:“你觉得自己学习用功了吗?请输入学习时间:”
判断键盘输入的时间:如果输入大于5,则系统输出:“很好,很用功!”
如果输入大于3,则系统输出:“还行,算你自觉:””
如果输入大于1,则系统输出:“一般般,同志人需努力”,否则,系统输出“你太懒了,去思过崖吧!”
并且必须重新输入时间,一次判断时间,输出对应信息,知道学习时间大于3小时,结束程序;
public static void main(String[] args){
System.out.println("你觉得自己学习用功了吗?请输入学习时间:");
for( ; ; ){
Scanner a =new Scanner(System.in);
int b=a.nextInt();
if(b>5){System.out.println("很好,很用功!"); break;}
else if(b>3){System.out.println("还行,算你自觉:"); break;}
else if(b>1){System.out.println("一般般,同志人需努力"); }
else {System.out.println("你太懒了,去思过崖吧!"); }
}
}
14,从键盘输入一个4位数,要求反转该4位数,组成新数字。
public static void main(String[] args){
System.out.println("请输入一个四位数,我们会把它反序输出;请输入:");
Scanner b=new Scanner(System.in);
int c=b.nextInt();
int ge=c%10;
int shi=c%100/10;
int bai=c%1000/100;
int qian=c/1000;
System.out.println(ge+""+shi+""+bai+""+qian);
}
15,从键盘输入两个数比大小,按顺序输出。
public static void main(String[] args){
for(;;){
System.out.println("请输入第一个数;");
Scanner a=new Scanner(System.in);
int b=a.nextInt();
System.out.println("请输入第二个数:");
Scanner c=new Scanner(System.in);
int d=c.nextInt();
if(b<d){
System.out.println("从小到大的顺序是"+b+","+d);
}else if(b==d){System.out.println(b+"=="+d);}
else System.out.println("从小到大的顺序是"+d+","+b);
}
}
16,键盘输入3个数,输出最大和最小,
public static void main(String[] args){
for(;;){
System.out.println("请输入第一个数;");
Scanner a=new Scanner(System.in);
int b=a.nextInt();
System.out.println("请输入第二个数:");
Scanner c=new Scanner(System.in);
int d=c.nextInt();
System.out.println("请输入第三个数;");
Scanner e=new Scanner(System.in);
int f=e.nextInt();
int j=Math.max(b, d);
int q=Math.max(j, f);
int w=Math.min(b, d);
int y=Math.min(w, f);
System.out.println("三个数中最大的数是"+q);
System.out.println("三个数中最小的数是"+y);
}
}
17,从键盘出入2个数字,要求2个数的变量换位置。
public static void main(String[] args){
for( ; ; ){
System.out.println("请输入第一个数:");
Scanner a=new Scanner(System.in);
int b=a.nextInt();
System.out.println("请输入第二个数:");
Scanner c=new Scanner(System.in);
int d=c.nextInt();
int f=d*10+b;
System.out.println("换位后的数字是"+f);
}
}
//两个数第一个数必须是个位数
public static void main(String[] args){
for( ; ; ){
System.out.println("请输入第一个数:");
Scanner a=new Scanner(System.in);
int b=a.nextInt();
System.out.println("请输入第二个数:");
Scanner c=new Scanner(System.in);
int d=c.nextInt();
int f=b;
b=d;
d=f;
System.out.println("换位后的数字是"+b+""+d);
}
}
换量及a的变量给b,b的变量给a。
18,键盘输入,判断一个数是否是质数。
public static void main(String[] args){
for(;;){
System.out.println("请输入检测数:");
Scanner b=new Scanner(System.in);
int a=b.nextInt();
int count=0;
for(int i=1;i<=a;i++){
if(a%i==0){
count++;
}
}
if(count==2){
System.out.println(a+"是质数");
}else {System.out.println(a+"不是质数");}
}
}
19,输出1--100的所有质数,并求和。
20,定义一个数组,方正确的用户名和密码,要求用户键盘输入用户名和密码判断,3次机 会。
21,键盘出入两个数,要求求最大公约数和最小公倍数,
public static void main(String[] args){
int count2=0;
int sun=0;
for(int i=1;i<=100;i++){
int count=0;
int j=1;
for( ;j<=i;j++){
if(i%j==0){
count++;
}
}
if(count==2){
System.out.println(i+"是质数");
count2++;
sun+=i;
}
}
System.out.println("1--100之内所有质数的和是"+sun+"总共有"+count2+"个质数");
}
20,定义一个数组,方正确的用户名和密码,要求用户键盘输入用户名和密码判断,3次机 会。
public static void main(String[] args){
String[] a={"aaa-111","bbb-222","ccc-333"};
int sun=0;
System.out.println("请输入用户名!!!");
Scanner b=new Scanner(System.in);
String c=b.nextLine();
for(int y=0;y<3;y++){
System.out.println("请输入密码!!!");
Scanner d=new Scanner(System.in);
String e=d.nextLine();
String f=c+"-"+e;
int count=0;
for(int i=0;i<a.length;i++){
if(!f.equals(a[i])){
count++;
}
}
if(count==a.length){
System.out.println("密码不正确,请重新输入!!!");
sun++;
}else{
System.out.println("密码正确!!!");
break;}
if(sun==3){
System.out.println("三次机会结束 ,请重新输入用户名!!!!");
break;
}
}
}
21,键盘出入两个数,要求求最大公约数和最小公倍数,
public static void main(String[] args){
System.out.print("请输入第一个数:");
Scanner a=new Scanner(System.in);
int b=a.nextInt();
System.out.print("请输入二个数:");
Scanner c=new Scanner(System.in);
int d=c.nextInt();
for(int i=b;i>=1;i--){
if(b%i==0 && d%i==0){
System.out.println("最大公约数是"+i);
break;
}
}
for(int i=b;i>=b;i++){
if(i%b==0 && i%d==0){
System.out.println("最大公倍数数"+i);
break;
}
}
}
22.求1到100之间的全部质数;
public static void main(String[] args){
for(int i=1;i<=100;i++){
int count=0;
for(int q=1;q<=i;q++){
if(i%q==0){
count++;
}
}
if(count==2){
System.out.println(i);
}
}
}
数字游戏:
22,系统产生1--100的随机数,你键盘输入一个1--100的整数,如果输入大了系统输出“大了”,如果小了,系统输出“小了”,要求一直不停输入,知道输入正确。
public static void main(String [] args){
while(true){
System.out.println("请输入一个1--100的整数");
Scanner a=new Scanner(System.in);
int b=a.nextInt();
System.out.println("你输入的是"+b);
if(b<1 || b>100){
System.out.println("输入的数不合规格,请重新输入");
}
int c=(int)(Math.random()*100+1);
System.out.println("系统输入的数是"+c);
if(b>c){
System.out.println("大了");
}if (b<c){
System.out.println("小了");
}if(b==c){
System.out.println("对了");
break;
}
}
}
** */
}

浙公网安备 33010602011771号