Java基础面试题总结-编程题(亲测可用)

1.理发题(10份)

(1)110元,洗剪吹31元,可以多少次洗剪吹?最后还剩多少?

(2)一次剪头发15元和一次洗头20元,平均每次消费多少钱?

public class Test04 {
    public static void main(String[]args){
        double money=110;
        double costone=31;
        int count=(int)(money/costone);
        System.out.println("可以理发"+count+"次");
        double lastmoney=money%costone;
        System.out.println("剩余"+lastmoney+"元");
        double avgmoney=(15d+20d)/2d;
        System.out.println("理发15,洗头20,那么平均消费是:"+avgmoney);

2.打印九九乘法表(15分)

public class NineNine {
    public static void main(String[] args) {
        for (int i= 1; i <=9 ; i++) {
          for (int j =1; j <=i ; j++) {
              System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

3.编写万用表程序

1 电压挡

2 电流挡

3 电阻档

4 其他档位

5 退出

注意:使用scanner(system.in)时,使用完毕后,一定要关闭扫描器,因为system.in属于IO流,一旦打开,它一直在占用资源,因此使用完毕后切记要关闭。(15分)

public class MulTimter {
    public static void main(String[] args) {
        System.out.println("欢迎使用万用表:");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请选择档位:1电压档  2电流档3电阻档  4其他档位  5退出  ");
        System.out.println("请输入你的选择:");
        String input = scanner.next();
// 过滤无效的选择
        while (!input.equals("1") && !input.equals("2")&& !input.equals("3")
                && !input.equals("4") && !input.equals("5")) {
            System.out.println("请输入有效的选择:");
            input = scanner.next();// 获取用户输入的选择
        }
        // 判断选择
        switch (input) {
            case "1":
                System.out.println("你选择了电压档");
                break;
            case "2":
                System.out.println("你选择了电流档");
                break;
            case "3":
                System.out.println("你选择了电阻档");
                break;
            case "4":
                System.out.println("你选择了其他档");
                break;
            case "5":
                System.out.println("谢谢您的使用!");
                break;
        }
        scanner.close();
    }
}

4.编写三个方法,分别得出一个数组的最大值,最小值,平均值。(15分)

public class array {
    public static void main(String[] args) {
        int[]array={1,2,3,4,5,6};
        int max=numMax(array);
        System.out.println("最大的数是:" + max);
        int min=numMin(array);
        System.out.println("最小的数是:" + min);
        double avg =numAvg(array);
        System.out.println("平均数是:" +avg);
    }

private static double numAvg(int[] array) {
        double sum=0;
        double numAvg=0;
        for (int i = 0; i <array.length ; i++) {
           sum+=array[i];
        }
        numAvg=sum/array.length;
        return numAvg;
    }

private static int numMin(int[] array) {
        int numMin=array[0]; //定义一个最小值
        for (int i = 0; i <array.length ; i++) {
           if (numMin>array[i]){
               numMin=array[i];
           }
        }
        return numMin;
    }

private static int numMax(int[] array) {
        int numMax=0;
        for (int i = 0; i <array.length ; i++) {
            if (numMax<array[i]){
                numMax=array[i];
            }
        }
        return numMax;
    }
}

5.创建宠物类(属性:名字 ,体重 方法: 奔跑,捕食)在DEMO类实例化宠物,设置名字,调用奔跑,捕食方法(15分)

public class Pet {
    private String name;
    private double weight;

public String getName() {
        return name;
    }

public void setName(String name) {
        this.name = name;
    }

public double getWeight() {
        return weight;
    }

public void setWeight(double weight) {
        this.weight = weight;
    }

void run(){
        System.out.println("它在奔跑");
    }
    void catchFood(){
        System.out.println("它在捕食");
    }
}
class demo{
    public static void main(String[] args) {
        Pet pet = new Pet();
        pet.setName("麒麟");
        pet.setWeight(100);
        System.out.println("我的宠物:" + pet.getName()+",体重:" + pet.getWeight()+"kg");
        pet.run();
        pet.catchFood();
    }
}

6.接收用户输入的5门功课并且,计算平均分。(15分)

给用户评级60-80良,81-90好,91-100优秀。

public class Test05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double array[]=new double[5];
        System.out.println("请输入5门功课的成绩");
        double sum = 0;// 定义分数总和值
        double avg = 0;// 定义平均分值
        for (int i = 0; i <5; i++) {
        System.out.print("请输入" + (i + 1)+ "第门成绩:");
           array[i] = scanner.nextDouble();
           sum+=array[i];
        }
        avg = sum / array.length;// 求得平均分值
        String rank = avg >=91 ? "优秀" : (avg >=81 ? "好" : (avg >=60) ? "良"
                : "");
        System.out.println("五门科目的平均分是:" + avg+"\t评级为:" + rank);
        scanner.close();
    }
}

7.创建一个面积类,可以计算长方形,圆形的面积。并在DEMO类测试,计算长方形面积,圆的面积。(15分)

public class Circele{
    private double radius = 0;// 圆的半径
    public Circele(double radius){// 通过构造方法,获得半径
        this.radius = radius;
    }
    //获得圆形面积
    double getArea() {
        return Math.PI * radius * radius;
    }
}

public class Rectangle {
    private double height=0;
    private double weigtht=0;
    public Rectangle(double height,double weigtht){
      this.height=height;
      this.weigtht=weigtht;
    }
    double getarea(){
        return height*weigtht;
    }
}

public class Demo {
    public static void main(String[] args) {
        Circele circele = new Circele(10);
        System.out.println("圆的面积是:"+circele.getArea());
        Rectangle rectangle = new Rectangle(10, 4);
        System.out.println("长方形面积是:"+rectangle.getarea());
    }
}

8.判断200-300之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

public class suShu {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 200; i<= 300; i++)
        {
            boolean isFind = false;
            for (int j= 2; j <i; j++)
            {
                if (i%j==0)
                {
                    isFind = true;
                    break;
                }
             }
            if (!isFind)
            {
                System.out.println(i);
                sum += i;
            }
        }
        System.out.println("200到300之间的质数之和是:"+sum);
    }
}

9.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:利用while语句,条件为输入的字符不为‘\n‘.

public class CountAll {
    public static void main(String[] args){

System.out.print("请输入一串字符:");

Scanner scan = new Scanner(System.in);

String str = scan.nextLine();//将一行字符转化为字符串

        scan.close();

count(str);

}

//统计输入的字符数

    private static void count(String str){

String E1 = "[\u4e00-\u9fa5]";//汉字

        String E2 = "[a-zA-Z]";

String E3 = "[0-9]";

String E4 = "\\s";//空格

        int countChinese = 0;

int countLetter = 0;

int countNumber = 0;

int countSpace = 0;

int countOther = 0;

char[] array_Char = str.toCharArray();//将字符串转化为字符数组

        String[] array_String = new String[array_Char.length];//汉字只能作为字符串处理

        for(int i=0;i<array_Char.length;i++) {

array_String[i] = String.valueOf(array_Char[i]);
        }

//遍历字符串数组中的元素

        for(String s:array_String){

if(s.matches(E1)) {

countChinese++;

}else if(s.matches(E2)) {

countLetter++;

}else if(s.matches(E3)){

countNumber++;

}else if(s.matches(E4)) {

countSpace++;

}else
                countOther++;
        }

System.out.println("输入的汉字个数:"+countChinese);

System.out.println("输入的字母个数:"+countLetter);

System.out.println("输入的数字个数:"+countNumber);

System.out.println("输入的空格个数:"+countSpace);

System.out.println("输入的其它字符个数:"+countSpace);

}
}

10.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

public class Sum {
    public static void main(String[] args){

System.out.print("求s=a+aa+aaa+aaaa+...的值,请输入a的值:");

Scanner scan = new Scanner(System.in).useDelimiter("\\s*");//以空格作为分隔符

        int a = scan.nextInt();

int n = scan.nextInt();

scan.close();//关闭扫描器

        System.out.println(expressed(2,5)+add(2,5));

}

//求和表达式

    private static String expressed(int a,int n){

StringBuffer sb = new StringBuffer();

StringBuffer subSB = new StringBuffer();

for(int i=1;i<n+1;i++){

subSB = subSB.append(a);

sb = sb.append(subSB);

if(i<n)

sb = sb.append("+");

}

sb.append("=");

return sb.toString();

}

//求和

    private static long add(int a,int n){

long sum = 0;

long subSUM = 0;

for(int i=1;i<n+1;i++){

subSUM = subSUM*10+a;

sum = sum+subSUM;

}

return sum;

}
}

11.输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

public class WhichDay {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in).useDelimiter("\\D");//匹配非数字
        System.out.println("请输入当前日期(年-月-日:");
        int year = scan.nextInt();
        int month = scan.nextInt();
        int date = scan.nextInt();
        scan.close();
        System.out.println("今天是"+year+"年的第"+analysis(year,month,date)+"天");
    }
    private static int analysis(int year, int month,int date){

int n = 0;

int[] month_date = new int[] {0,31,28,31,30,31,30,31,31,30,31,30};

if((year%400)==0 || ((year%4)==0)&&((year%100)!=0))

month_date[2] = 29;

for(int i=0;i<month;i++)

n += month_date[i];

return n+date;

}
}

12.输入三个整数x,y,z,请把这三个数由小到大输出

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小

public class Compare {
    public static void main(String[] args){

Scanner scan = new Scanner(System.in).useDelimiter("\\D");

System.out.print("请输入三个数:");

int x = scan.nextInt();

int y = scan.nextInt();

int z = scan.nextInt();

scan.close();

System.out.println("排序结果:"+sort(x,y,z));

}

//比较两个数的大小

    private static String sort(int x,int y,int z){

String s = null;

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 = z;

z = y;

y = t;

}

s = x+" "+y+" "+z;

return s;

}
    }

13.求1+2!+3!+...+20!的和

程序分析:此程序只是把累加变成了累乘。

public class ForTest {
    public static void main(String[] args){
    int x=1;
    int sum=0;
     for (int i = 1; i <=20 ; i++) {
        x=x*i;
        sum+=x;
        }
        System.out.println(sum);
    }
}

14.利用递归方法求5!

程序分析:递归公式:fn=fn_1*4!

public class Fn {
    public static void main(String[] args) {
        System.out.println(fact(10));
    }
    //递归阶乘公式
    private  static  long fact(int n){
     if(n==1){
         return 1;
     }else {
         return fact(n-1)*n;
     }
    }
}

15.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

public class Week {
    public static void main(String[] args){

String str = new String();

BufferedReader bufIn = new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输入星期的英文单词前两至四个字母):");

try{

str = bufIn.readLine();

}catch(IOException e){

e.printStackTrace();

}finally{

try{

bufIn.close();

}catch(IOException e){

e.printStackTrace();

}

}

week(str);

}

private static void week(String str){

int n = -1;

if(str.trim().equalsIgnoreCase("Mo") || str.trim().equalsIgnoreCase("Mon") || str.trim().equalsIgnoreCase("Mond"))

n = 1;

if(str.trim().equalsIgnoreCase("Tu") || str.trim().equalsIgnoreCase("Tue") || str.trim().equalsIgnoreCase("Tues"))

n = 2;

if(str.trim().equalsIgnoreCase("We") || str.trim().equalsIgnoreCase("Wed") || str.trim().equalsIgnoreCase("Wedn"))

n = 3;

if(str.trim().equalsIgnoreCase("Th") || str.trim().equalsIgnoreCase("Thu") || str.trim().equalsIgnoreCase("Thur"))

n = 4;

if(str.trim().equalsIgnoreCase("Fr") || str.trim().equalsIgnoreCase("Fri") || str.trim().equalsIgnoreCase("Frid"))

n = 5;

if(str.trim().equalsIgnoreCase("Sa") || str.trim().equalsIgnoreCase("Sat") || str.trim().equalsIgnoreCase("Satu"))

n = 2;

if(str.trim().equalsIgnoreCase("Su") || str.trim().equalsIgnoreCase("Sun") || str.trim().equalsIgnoreCase("Sund"))

n = 0;

switch(n){

case 1:

System.out.println("星期一");

break;

case 2:

System.out.println("星期二");

break;

case 3:

System.out.println("星期三");

break;

case 4:

System.out.println("星期四");

break;

case 5:

System.out.println("星期五");

break;

case 6:

System.out.println("星期六");

break;

case 0:

System.out.println("星期日");

break;

default:

System.out.println("输入有误!");

break;

}

}
}

16.100之内的素数

程序分析:素数是不能被1或者它本身之外的其他数整除的整数

public class Sushu {
    public static void main(String[] args) {
        int i,j;
        for ( i = 1; i <=100;i++) {
            for ( j =2; j <i ; j++) {
              if ((i%j)==0){
                  break;
              }
            }
            if (i==j){
                System.out.println(i);
            }
        }
    }
}

17.输入3个数a,b,c,按大小顺序输出。

public class ThreeNumber {
    public static void main(String[] args){

System.out.print("请输入3个数:");

Scanner scan = new Scanner(System.in).useDelimiter("\\s");

int a = scan.nextInt();

int b = scan.nextInt();

int c = scan.nextInt();

scan.close();
        if(a<b){
            int t = a;
            a = b;
            b = t;
        }
        if(a<c){
            int t = a;
            a = c;
            c = t;
        }
        if(b<c){
            int t = b;
            b = c;
            c = t;
        }
        System.out.println(a+" "+b+" "+c);
    }
}

18.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

//注意:next()方法读取到空白符就结束了,nextLine()读取到回车结束也就是“\r”;
public class StringLenth {
    public static void main(String[] args) {
        System.out.print("请输入一行字符串:");
        Scanner scanner = new Scanner(System.in).useDelimiter("\\n");
        String str = scanner.nextLine();
        scanner.close();
        //将字符串转化为字符数组
        char[]chars=str.toCharArray();
        System.out.println(str+"共"+(chars.length-1)+"个字符");

}
}

19.对字符串的排序

public class letter {
    public static void main(String[] args){

String[] str = {"abc","cad","m","fa","f"};

for(int i=str.length-1;i>=1;i--){

for(int j=0;j<=i-1;j++){

if(str[j].compareTo(str[j+1])<0){

String temp = str[j];

str[j] = str[j+1];

str[j+1] = temp;

}

}
        }

for(String subStr:str)

System.out.print(subStr+" ");

}
}

20.两个字符串连接程序

public class Connection {
    public static void main(String[] args) {
        String str1="你好,";
        String str2="世界欢迎你!";
        String str=str1+str2;
        System.out.println(str);
    }
}

21.统计字符串中子串出现的次数

public class Character {
    public static void main(String[] args){
        String str = "I come from China";
        char[] ch = str.toCharArray();
        int count = 0;
        for(int i=0;i<ch.length;i++){
            if(ch[i]==‘ ‘)
                count++;
        }
        count++;
        System.out.println("共有"+count+"个字串");
    }
}

22.有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

public class Student {
     //定义学生数组模型
    String[] number = new String[5];
    String[] name = new String[5];
    float[][] grade = new float[5][3];
    float[] sum = new float[5];

/**
     * 输入学号、姓名、成绩
     */
    void input() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //录入状态标识
        boolean isRecord=true;
        while (isRecord){
            try {
            for (int i = 0; i <5 ; i++) {
                System.out.print("请输入学号:");
                number[i]=br.readLine();
                System.out.print("请输入姓名:");
                name[i] = br.readLine();
                for (int j = 0; j <3; j++) {
                System.out.print("请输入第"+(j+1)+"门课成绩:");
                grade[i][j] = Integer.parseInt(br.readLine());
                }
                System.out.println();
                sum[i] = grade[i][0]+grade[i][1]+grade[i][2];
            }
                isRecord=false;
            }catch (Exception e){
                System.out.print("请输入数字!");
            }
        }
    }

/**
     * 输出文件内容
     * @param
     */
    void output() throws IOException {
        FileWriter fw = new FileWriter("E:\\Me\\我的下载\\stud.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write("No.  "+"Name  "+"grade1  "+"grade2  "+"grade3  "+"average");
        //换行
        bw.newLine();
        for (int i = 0; i <5; i++) {
         bw.write(number[i]);
            for (int j = 0; j <3 ; j++) {
                bw.write(" "+grade[i][j]);
                bw.write(" "+sum[j]/5);
                bw.newLine();
            }
        }
        bw.close();
    }

public static void main(String[] args) throws IOException {
        Student student = new Student();
        student.input();
        student.output();
    }
}

23.从硬盘中复制一个文件内容到另一个文件中

public class FileCopy {
    public static void main(String[] args) {
      copyAToB();
    }
    public static void copyAToB(){
        File file=new File("E:/Me/我的下载/stud.txt");
        File file2=new File("E:/Me/我的下载/b.txt");
        if(!file2.exists()){
            try {
                file2.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        InputStream in=null;
        OutputStream out=null;
        try {
            in=new FileInputStream(file);//建立到a的流
            out=new FileOutputStream(file2);//建立到b的流
            int i;
            while((i=in.read())!=-1){//从a读取字母
                out.write(i);//将字母写到b里
            }
            System.out.println("复制成功!");

} catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                out.close();
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

}
    }
}

参考资料:https://blog.csdn.net/wenzhi20102321/article/details/52430616

https://blog.csdn.net/cao2219600/article/details/80973336

原文地址:https://www.cnblogs.com/ttg-123456/p/12236275.html

时间: 2024-07-31 11:52:18

Java基础面试题总结-编程题(亲测可用)的相关文章

Java代码中执行Linux命令,亲测可用

前提需要知道怎么在linux怎么新建java文件和怎么编译,否则请先学其他知识!! import java.io.*;public class Test{ public static void main(String[] args) throws Exception{try{Process process=Runtime.getRuntime().exec("ls ./");InputStreamReader reader = new InputStreamReader(process

java基础面试题(转)

JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派

Java基础面试题集(一)

Java基础面试题 一.面向对象编程(OOP) 7 二.常见的Java问题 7 2.1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 7 2.2.JDK和JRE的区别是什么? 8 2.4.是否可以在static环境中访问非static变量? 8 2.5.Java支持的数据类型有哪些?什么是自动拆装箱? 8 2.6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 8 2.7.Java中,什么是构造函数?什么是构造函数重载?什么是

经典的Java基础面试题集锦

经典的Java基础面试题集锦,欢迎收藏和分享 一.面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:publ

Java基础面试题,JavaWeb面试题

java基础面试题 1.Java的基本类型(8个)每个基本类型所占位数与字节数byte 1字节 8位short 2字节 16位int 4字节 32位long 8字节 64位char 2字节 16位float 4字节 32位double 8字节 64位boolean 1字节 8位 2.Int与Integer区别Integer是int的包装类,int则是java的一种基本数据类型Integer变量必须实例化后才能使用,而int变量不需要Integer实际是对象的引用,当new一个Integer时,实

28道java基础面试题-下

28道java基础面试题-下15.Java语言如何进行异常处理,关键字:throws.throw.try.catch.finally分别如何使用?答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例.当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理.Java的异常处理是通过5个关键词来实现的:try.catch.th

28道java基础面试题-上

[软帝学院]28道java基础面试题1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么.继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类).继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的<Java与

Java基础机试题

package day8;import java.util.Scanner;/** * Java基础机试题 * @author:lyrand * */public class convert {        static void exitContinue(){                while (true){            System.out.print("你想继续吗?(y/n)");            Scanner sc = new Scanner(Sys

java基础学习总结——GUI编程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("