java简单逻辑题
1.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,
还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只
剩下一个桃子了。求第一天共摘了多少。
int tao=1;
for(int i=1;1<10;i++){ //for 循环9次
tao=(tao+1)*2; //桃子+1个再乘2
System.out.println(tao); //打印 tao
}
三目运算符
a= 5;b= 3;
int nme= a>b? a: b;//a>b对,执行a 三目运算符
System.out.println(nme);
nme= a<b? a: b;//a<b对,执行b
System.out.println(nme);
nme= a>=b? a-b: a+b;//a大于等于b对,执行a-b
2,利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间
的用B表示,60分以下的用C表示
int num=1000;
if(num>=90){
System.out.println("成绩是A");
}else{
if(num>=60){
System.out.println("成绩是B");
}else{
System.out.println("成绩是c");
}
}
3,有一个数字123.45678,请四舍五入保留两位小数。
double d=123.45678;
System.out.println(((int)(d*100)+0.5)/100);
4,(a),用while 求1到100和
int n=1;
int sum=0;
while(n<=100){
sum+=n;
n++;
}
System.out.println(sum);
(b),
int tn=0;
for(a=1;a<=100;a++){
tn=tn+a;
}
System.out.println(tn);
(c),计算1-100所有偶数的和
int tt=0;
b=0;
for(b=2;b<=100;b+=2){
tt+=b;
}
System.out.println(tt);
(d),计算1到一百所有奇数和
int iu=0;
b=0;
for(b=1;b<=100;b+=2){
iu+=b;
}
System.out.println(iu);
(e),计算数字5的阶乘
int sum=0,jc=1;
for(int i=1;i<=5;i++){
jc*=i;
sum+=jc;
}
System.out.println(sum+"\t"+jc);
5,(a),用for求所有水仙花数
for(int i4=100;i4<1000;i4++){
int bb=i4/100;
int ss=i4/10%10;
int gg=i4%10;
if(bb*bb*bb+ss*ss*ss+gg*gg*gg==i4){
System.out.println(i4+"是水仙花");
}
}
(b), int sxh=153;
int ba=sxh/100;
int sh=sxh/10%10;
int ge=sxh%10;
if(ba*ba*ba+sh*sh*sh+ge+ge*ge==sxh){
System.out.println(sxh+"是水仙花");
}else{
System.out.println(sxh+"不是水仙花");
}
6,(a),99乘法表格表
int y; //正常乘法表
int u;
for(y=1;y<10;y++){
for(u=1;u<=y;u++){
System.out.print(y+"*"+u+"="+(y*u)+"\t");
}
System.out.println();
}
(b),打印乘法口诀表。
for(int i=1;i<10;i++){ //反过来的乘法表
for(int k=1;k<i;k++){
System.out.print("\t");
}
for(int j=9;j>=i;j--){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println("");
}
(c), 打印乘法口诀表。
for(int i=1;i<10;i++){ //反过来的乘法表2
for(int j=8+i;j>=i;j--){
if(j>9){
System.out.print("\t");
}else{
System.out.print(i+"*"+j+"="+i*j+"\t");
}
}
System.out.println("");
}
7,(a),用数组保存五名学生的成绩,并将成绩排序,打印出(升序或降序)。
int[] i={66,33,54,79,94}; //int数组
for(int u=1;u<i.length;u++){
for(int j=1;j<i.length-u;j++){
if(i[u]>i[u+1]){ //冒泡
int tum;
tum=i[u]; //数组元素转换位置
i[u]=i[u+1];
i[u+1]=tum;
}
}
}
for(int u=0;u<i.length;u++){ //遍历数组
System.out.println(i[u]);
}
(b),int[] score={59,61,70,89,100};
for(int i=0;i<score.length;i++){ //排序
for(int j=i;j<score.length;j++){
if(score[i]>score[j]){
int temp;
temp=score[j];
score[j]=score[i-1];
score[i-1]=temp;
}
}
}
for(int i=0;i<score.length;i++){
System.out.println(score[i]);
}
8,判断一个数为几位数
b=2;
if(1>b || b>10000){
System.out.println("错误 ");
}
if(1<=b && b<10){
System.out.println("这是一个一位数 ");
}
if(10<=b && b<100){
System.out.println("这是一个二位数");
}
if(100<=b && b<1000){
System.out.println("这是一个三位数");
}
if(1000<=b && b<10000){
System.out.println("这是一个四位数");
}
9,某公司每月标准上班时间是160小时,每小时工资是30元。
如果上班时间超出了160小时,超出部分每小时按1.5倍工资发放。请编写程序计算员工月工资
int time=220;
int gz;
if(time<=160){
gz=time*30;
System.out.println("工资="+gz);
}
if(time>160){
gz=time*30+(time-160)*45;
System.out.println("工资="+gz);
}
10,//判断一个5位正整数是不是回文数。
int hui=21314;
int wan=hui/10000;
int qian=hui/1000%10;
int shi2=hui/10%10;
int ge3 =hui%10;
if(wan==ge3 && qian==shi2){
System.out.println("是");
}else{
System.out.println("不是");
}
11,(a) ,根据学生成绩,打印学生考试等级。
[90,100] 优
[80,90) 良
[60,80) 中
[0,60) 差
int sco=89;
if(90<=sco && sco<=100){
System.out.println("优秀");
}
if(80<=sco && sco<90){
System.out.println("良");
}
if(60<=sco && sco<80){
System.out.println("中");
}
if(0<=sco && sco<60){
System.out.println("差");
}
(b),
if(90<=sco && sco<=100){
System.out.println("优");
}else if(80<=sco && sco<90){
System.out.println("良");
}else if(60<=sco && sco<80){
System.out.println("中");
}else if(0<=sco && sco<60){
System.out.println("差");
}else{
System.out.println("输出错误");
}
©,switch运用
char c='良';
// String s="优";
switch(c){
case'优':
System.out.println("成绩在90到100之间");
break;
case'良':
System.out.println("成绩在80到90之间");
break;
case'中':
System.out.println("成绩在60到80之间");
break;
case'差':
System.out.println("成绩在0到60之间");
break;
default:
System.out.println("错误");
}
12,求圆
double r;
public static final double PI=3.14; //定义常量π
public Circle(){
r=4;
}
public void mianji(){ //求圆的面积
System.out.println(PI*r*r);
}
public void zhouchang(){ //周长方法
System.out.println(2*PI*r);
}
public static void main(String [] args){
Circle m=new Circle(); //创建对象
System.out.println(m.r); //打印对象m的r值
m.mianji(); //调用m对象的mianji的方法
m.zhouchang(); //调用m对象的zhouchang的方法
}
13,请定义一个交通工具(Vehicle)的类,其中有:
属性:速度(speed),车的类型(type)等等
方法:移动(move()),设置速度(setSpeed(double s)),加速speedUp(double s),
减速speedDown(double s)等等.
最后在测试类Vehicle中的main()中实例化一个交通工具对象,
并通过构造方法给它初始化speed,type的值,并且打印出来。另外,调用加速,减速的方法对速度进行改变。
double speed;
String type;
public Vehicle(){
type="摩托车";
speed=80;
}
public void move(){
System.out.println(speed+type);
}
public void setSpeed(double s){
System.out.println(type+"开始起飞,速度"+speed+"码");
}
public void speedUp(double s){
System.out.println("车辆开始加速,速度"+(speed+s));
speed+=s;
}
public void speedDown(double s){
System.out.println("前方有事故,开始减速"+(speed-s)+"英雄救美成功");
}
public static void main(string [] args){
Vehicle veh=new Vehicle();
veh.move();
veh.setSpeed(20);
veh.speedUp(20);
veh.speedDown(60);
}
14,//1、 创建一个List,在List 中增加三个工人,基本信息如下: 姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
a、 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
b、 删除wang5 的信息
c、利用for 循环遍历,打印List 中所有工人的信息
d、 利用迭代遍历,对List 中所有的工人调用work 方法。
e、 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
Worker w1=new Worker("zhang3",18,3000);
Worker w2=new Worker("zhang3",18,3000);
Worker w3=new Worker("wang5",22,3200);
List list=new ArrayList();
list.add(w1);
list.add(w2);
list.add(w3);
Worker w4=new Worker("zhao6",24,3300);
list.add(1, w4);
list.remove(w3);
System.out.println(w1.equals(w2));
Iterator it=list.iterator();
while(it.hasNext()){
Worker obj=(Worker) it.next();
obj.work();
}
// for(int i=0;i<list.size();i++){
// System.out.println(list.get(i));
// }
// for (Object object : list) {
// System.out.println(object);
// }
15,//2、 创建一个List集合对象, 添加20个30以内的随机整数, 并打印输出
List list=new ArrayList();
for(int i=0;i<20;i++ ){
list.add((int)(Math.random()*30));
}
for (Object object : list) {
System.out.println(object);
}
16,声明一个Set集合,只能保存Double类型的数据,
保存10个随机100以内的数, 找出最大值和最小值,打印输出.
public static void main(String[] args) {
Set<Double> set=new HashSet<Double>();
//for(int i){}
int count=0;
while(true){
set.add((Math.random()*100));
count++;
if(set.size()==10){
break;
}
}
System.out.println("循环次数"+count);
for (Double double1 : set) {
System.out.println(double1);
}
17,//写一个Student类, 包含属性id[1-30), grade[1-6],score[0-100], 所有属性都是随机生成
创建一个Set集合, 保存20个对象, 如果两个对象的id
是一样的,则不允许添加. 使用迭代器遍历集合,打印输出对象的信息, 并找出分数最高的同学和分数最低的同学, 最后打印输出最高分和最低分同学信息
Set set=new TreeSet();
while(true){
int id=(int)(Math.random()*29+1);
int grade=(int)(Math.random()*6+1);
int score=(int)Math.rint((Math.random()*100));
set.add(new Student(id,grade,score));
if(set.size()==20){
break;
}
}
for (Object object : set) {
System.out.println(object);
}
System.out.println("===================");
/**
* 把成绩放到一个list集合里然后排序
*/
List list=new ArrayList();
for (Object object : set) {
Student stu=(Student) object;
list.add(stu.score);
}
Collections.sort(list);
//求出最大成绩和最小成绩
int stumax=(int) list.get(list.size()-1);
int stumin=(int)list.get(0);
//遍历set集合,对比出最大成绩和最小成绩的人的信息
for (Object object : set) {
Student stu=(Student) object;
if(stumax==stu.score){
System.out.println("最高分是"+stu.score+"\t 学生信息是"+stu);
}
if(stumin==stu.score){
System.out.println("最低分是"+stu.score+"\t\t学生信息是"+stu);
}
18,//、给出一个长度为7byte数组,请给下标2到6之间数字进行升序排序
int [] count={2,9,1,7,4,6,5};
int [] j=Arrays.copyOfRange(count, 2, 6);
Arrays.sort(j);
int sum=0;
for(int i=0;i<count.length;i++){
if(i>=2 && i<count.length-1){
count[i]=j[sum];
sum++;
}
}
for (int i : count) {
System.out.println(i);
}
// for(int i=0;i<3;i++){
// for(int j=0;j<=2-i;j++){
// if(count[j+2]>count[j+3]){
// int temp=count[j+2];
// count[j+2]=count[j+3];
// count[j+3]=temp;
//
// }
// }
// }
// for (int i : count) {
// System.out.println(i);
// }
20,//编写程序,使用Scanner从控制台读取一个字符串,
//输出其中重复的字符、不重复的字符以及消除重复以后的字符列表。
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
Set s1=new HashSet();//消除重复后的字符列表
Set s2=new HashSet();//重复的字符串
Set s3=new HashSet();//不重复的字符串
for (int i=0;i<str.length();i++) {
String s=str.substring(i, i+1);
boolean boo=s1.add(s);
if(!boo){
s2.add(s);
}
}
s3.addAll(s1);
s3.removeAll(s2);
for (Object d : s3) {
System.out.println("s3="+d);
}
System.out.println("==========");
for (Object d : s1) {
System.out.println("s1="+d);
}
System.out.println("==========");
for (Object d : s2) {
System.out.println("s2="+d);
}
21,//使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现的次数,
// 要求使用学习过的知识完成以上要求 实现思路根据Set、List、Map集合的特性完成。
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char[] ch=str.toCharArray();
List list=new ArrayList();
Set set=new HashSet();
List liset=new ArrayList();
for (char c : ch) {
set.add(c);
list.add(c);
}
liset.addAll(set);
for(int i=0;i<liset.size();i++){
int count=0;
for(int j=0;j<list.size();j++){
if(liset.get(i)==list.get(j)){
count++;
}
}
System.out.println(liset.get(i)+"次数为"+count);
}
22,//使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现的次数,
// 要求使用学习过的知识完成以上要求 实现思路根据Set、List、Map集合的特性完成。
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char[] ch=str.toCharArray();
List list=new ArrayList();
Set set=new HashSet();
List liset=new ArrayList();
for (char c : ch) {
set.add(c);
list.add(c);
}
liset.addAll(set);
for(int i=0;i<liset.size();i++){
int count=0;
for(int j=0;j<list.size();j++){
if(liset.get(i)==list.get(j)){
count++;
}
}
System.out.println(liset.get(i)+"次数为"+count);
}
public String name;
public int age;
public double salary;
public Employee() {
super();
}
public Employee(String name, int age, double salary) {
super();
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return "[name="+name+",age="+age+",salary="+salary+"]";
}
public static void main(String[] args) {
Employee emp1=new Employee("a",30,4000);
Employee emp2=new Employee("b",25,4000);
Employee emp3=new Employee("c",25,3000);
Employee emp4=new Employee("d",20,1800);
Employee emp5=new Employee("e",25,3000);
List<Employee> list=new ArrayList<Employee>();
list.add(emp1);
list.add(emp2);
list.add(emp3);
list.add(emp4);
list.add(emp5);
for(int i=0;i<list.size()-1;i++){
for(int j=0;j<list.size()-1-i;j++){
Employee e1=list.get(j);
Employee e2=list.get(j+1);
if(e1.salary>e2.salary){
list.set(j, e2);
list.set(j+1, e1);
}else if(e1.salary==e2.salary){
if(e1.age>e2.age){
list.set(j, e2);
list.set(j+1, e1);
}else if(e1.age==e2.age){
if(e1.name.compareTo(e2.name)>0){
list.set(j, e2);
list.set(j+1, e1);
}
}
}
}
}
for (Employee employee : list) {
System.out.println(employee);
}