java简单逻辑题

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);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值