Java练习题 - 流程控制

  • 企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数?
public class Answer {
  public static void main(String[] args) {
       double x = 0,y = 0;
       System.out.print("输入当月利润(万):");
       Scanner s = new Scanner(System.in);
       x = s.nextInt();
       if(x > 0 && x <= 10) {
       y = x * 0.1;
       } else if(x > 10 && x <= 20) {
        y = 10 * 0.1 + (x - 10) * 0.075;
       } else if(x > 20 && x <= 40) {
        y = 10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05;
       } else if(x > 40 && x <= 60) {
        y = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (x - 40) * 0.03;
       } else if(x > 60 && x <= 100) {
        y = 20 * 0.175 + 20 * 0.05 + 20 * 0.03 + (x - 60) * 0.015; 
       } else if(x > 100) {
        y = 20 * 0.175 + 40 * 0.08 + 40 * 0.015 + (x - 100) * 0.01;
       }
       System.out.println("应该提取的奖金是 " + y + "万");
  }
}
  • 给定一个成绩a,使用switch结构求出a的等级。A:90-100,B:80-89,C:70-79,D:60-69,E:0~59(知识点:条件语句switch)
public class Exercise_03_02 {
  public static void main(String[] args) {
      int x;
      int grade = 0;
      Scanner s = new Scanner(System.in);
      System.out.print("请输入一个成绩: ");
      x = s.nextInt();
              
      if (x > 0 && x <= 100) {//判断成绩是否合法,如果合法,进行比较
          grade = x/10;
          switch(grade){
              case 10:
              case 9:System.out.println("等级为A");break;
              case 8:System.out.println("等级为B");break;
              case 7:System.out.println("等级为C");break;
              case 6:System.out.println("等级为D");break;
              default:System.out.println("等级为E");break;
              
          }
                      
      } else {//判断成绩是否合法,如果非法,进行提示用户
          System.out.println("输入的成绩必须在0-100之间" );
      }
              
  }
}
  • 假设某员工今年的年薪是30000元,年薪的年增长率6%。编写一个Java应用程序计算该员工10年后的年薪,并统计未来10年(从今年算起)总收入。
public class Exercise_03_03 {
  public static void main(String[] args) {
      double nianxin=30000;
      long sum = 0;
      
      for(int i=1;i<=10;i++){
          nianxin = nianxin*(1+0.06);
          sum+=nianxin;
      }
      System.out.println("年薪为"+nianxin+"总工资为"+sum);
  }
}
  • 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。
public class Answer {
  public static void main(String[] args) {
       int x = 1;
       for(int i=2; i<=10; i++) {
        x = (x+1)*2;
       }
       System.out.println("猴子第一天摘了 " + x + " 个桃子");
  }
}
  • 输入一个数字,判断是一个奇数还是偶数
public class Exercise_03_05 {
  public static void main(String[] args) {
  if(i!=0){
          System.out.println("0");
      }
      else if(i%2==1){
          System.out.println("奇数");
      }else if(i%2==0){
          System.out.println("偶数");
      }
  }
}
  • 编写程序, 判断一个变量x的值,如果是1,输出x=1,如果是5,输出x=5,如果是 10,输出x=10,除了以上几个值,都输出x=none。
public class Exercise_03_05 {
  public static void main(String[] args) {
  int x=1;
       
       switch(x)
       {
           case 1:
           {
               System.out.println("x=1");
               break;
           }
           case 5:
           {
               System.out.println("x=5");
               break;
           }
           case 10:
           {
               System.out.println("x=10");
               break;
           }
           default:
           {
               System.out.println("none");
               break;
           }
       }
  }
}
  • Switch说明
     表达式的值只可以接受int、byte、char、short 型,不接受其他类型的值
    不允许有重复的case取值
     switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置,开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,直到碰到break语句为止
  • 判断一个数字是否能被5和6同时整除(打印能被5和6整除),或只能被5整除(打印能被5整除),或只能被6整除,(打印能被6整除),不能被5或6整除,(打印不能被5或6整除)
public class Exercise_03_06 {
  public static void main(String[] args) {
      System.out.println("***********请输入一个整数*********");
       Scanner scanner = new Scanner(System.in);

       int value = scanner.nextInt();

       if (value % 5 == 0 && value % 6 == 0) {
        System.out.println("输入的数字" + value + "能被5和6整除");
       } else if (value % 5 == 0) {
        System.out.println("输入的数字" + value + "能被5整除");
       } else if (value % 6 == 0) {
        System.out.println("输入的数字" + value + "能被6整除");
       } else {
        System.out.println("输入的数字不能被5或者6整除");
       }
  }
}
  • 输入一个年份,判断这个年份是否是闰年
public class Exercise_03_07 {
  public static void main(String[] args) {
       int year=2012;
       if(year%4==0&&year%100!=0||year%400==0){
          System.out.println("闰年"); 
       }else{
          System.out.println("不是闰年");
       } 
  }
}
  • 输入一个0~100的分数,如果不是0~100之间,打印分数无效,根据分数等级打印A,B,C,D,E
public class Exercise_03_08 {
  public static void main(String[] args) {
      int score = 999;
      if(score<=100&&score>=90)
          System.out.println("A"); 
      else if(score<90&&score>=80)
          System.out.println("B");
      else if(score<80&&score>=70)
          System.out.println("C");
      else if(score<70&&score>=60)
          System.out.println("D");
      else if(score<=70&&score>60)    
          System.out.println("E");
      else
          System.out.println("分数无效");
  }
}
  • 试写一个三位数,从小到大排列,然后再从大到小排列。
import java.util.Scanner;

public class Answer {
  public static void main(String[] args) {
       input fnc = new input();
       int x=0, y=0, z=0;
       System.out.print("输入第一个数字:");
        x = fnc.input();
       System.out.print("输入第二个数字:");
        y = fnc.input();
       System.out.print("输入第三个数字:");
        z = fnc.input();   
      if(x > y) {
        int t = x;
        x = y;
        y = t;
       }
      if(x > z) {
        int t = x;
        x = z;
        z = t;
       }
      if(y > z) {
        int t = y;
        y = z;
        z = t;
       }
      System.out.println( "三个数字由小到大排列为: "+x + " " + y + " " + z);
  }
  }
  class input{
  public int input() {
       int value = 0;
       Scanner s = new Scanner(System.in);
       value = s.nextInt();
       return value;
  }

}
  • 有一个不多于5位的正整数,求它是几位数,分别打印出每一位数字。
import java.util.Scanner;
public class Answer {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       // TODO code application logic here
//        int num=12345;
       System.out.println("请输入一个不多于五位的正整数:");
       int num = input();
       String str = String.valueOf(num);
       System.out.println(num + "的位数为:" + str.length());
       System.out.println("它的各位数分别为:");
       for (int i = 0; i < str.length(); i++) {
//            System.out.println(str.charAt(i));
           System.out.print(str.charAt(i) + " ");
       }
       System.out.println();
       System.out.println("它的各位数逆序分别为:");
       for (int i = str.length() - 1; i >= 0; i--) {
//            System.out.println(str.charAt(i));
           System.out.print(str.charAt(i) + " ");
       }
       System.out.println();
   }

   private static int input() {
       Scanner scanner = new Scanner(System.in);
       int n = scanner.nextInt();
       return n;
   }
}
  • 编写一个程序,计算邮局汇款的汇费。如果汇款金额小于100元,汇费为一元,如果金额在100元与5000元之间,按1%收取汇费,如果金额大于5000元,汇费为50元。汇款金额由命令行输入。
public class Answer {

  public static void main(String[] args) {
      double A = Integer.parseInt(args[0]);
      double a = 0;
      if (A > 5000) {
          a = 50;
      } else if (100 <= A) {
          a = A * 0.01;
      } else if (100 > A) {
          a = 1.0;
      }
      System.out.println("汇费为:" + a);
  }

}
  • 分别使用for循环,while循环,do循环求1到100之间所有能被3整除的整数的和。
public class Answer {
  public static void main(String[] args) {
      //for部分
      {
          int i, a = 0;
          for (i = 1; i <= 100; i++) {
              if (i % 3 == 0)
                  a = a + i;
          }
          System.out.println(a);
      }
      //while 部分
      {
          int i = 1, a = 0;
          while (i < 101) {
              if (i % 3 == 0) {
                  a = a + i;
              }
              i++;
          }
          System.out.println(a);
      }
      //do while部分
      {
          int i = 0, a = 0;
          do {
              if (i % 3 == 0) {
                  a = a + i;
              }
              i++;
          } while (i < 101);
          System.out.println(a);
      }
  }
}
  • 输出0-9之间的数,但是不包括5。
public class Answer {
  public static void main(String[] args)
   {
       for(int i=0;i<10;i++)
       {
           if(i==5)
           {
               continue;
           }
           System.out.println(i);
       }
   }
}
  • 编写一个程序,求整数n的阶乘,例如5的阶乘是12345
import java.util.Scanner;
public class Answer {
  public static void main(String[] args) {
      System.out.println("input:");
      Scanner in = new Scanner(System.in);
      int n = in.nextInt();
      int i = 0;
      int m = 1;
      for (i = 1; i <= n; i++) {
          m = m * i;
      }
      System.out.println("n的阶乘为:"+m);
  }
}
  • 编写一个程序,找出大于200的最小的质数
public class Answer {
  public static void main(String[] args) {
      // TODO Auto-generated method stub
      for (int i = 200; i < 300; i++) {
          boolean b = true;
          for (int j = 2; j < i; j++) {
              if (i % j == 0) {
                  b = false;
                  break;
              }
          }
          if (!b) {
              continue;
          }
          System.out.println(i);
          break;
      }
  }
}
  • 由命令行输入一个4位整数,求将该数反转以后的数,如原数为1234,反转后的数位4321
public class Answer {
  public static void main(String[] args) {
      int a, b, c, d, s;
      int n = Integer.parseInt(args[0]);
      a = n / 1000;
      b = n / 100 % 10;
      c = n / 10 % 10;
      d = n % 10;
      s = d * 1000 + c * 100 + b * 10 + a;
      System.out.println("反转后数为:" + s);
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,307评论 0 9
  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 6,940评论 0 9
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,841评论 0 2
  • Day01 class 例子{ public static void main(String[] args){ ...
    周书达阅读 1,012评论 0 0
  • /*各个变量的命名不规范,若要参考,请自己对各个变量进行规范命名*/ /*1、企业发放的奖金根据利润提成。利润低于...
    煙雨樓邰郁维阅读 916评论 0 0