Java基础-编程题汇总

1. 对第一个java程序的总结

1. java程序编写-编译-运行的过程
编写:我们将编写的java代码保存在以".java"结尾的源文件中
编译:使用javac.exe命令编译我们的java源文件。格式:javac 源文件名.java
运行:使用java.exe命令解释运行我们的字节码文件。 格式:java 类名

2.
在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。
而且要求声明为public的类的类名必须与源文件名相同。

3. 程序的入口是main()方法。格式是固定的。

4. 输出语句:
System.out.println():先输出数据,然后换行
System.out.print():只输出数据

5.每一行执行语句都以";"结束。

6.编译的过程:编译以后,会生成一个或多个字节码文件。字节码文件的文件名与java源文件中的类名相同。

package com.atguigu.java;

public class Hello {
    // public static void main(String a[]) {//arguments:参数
    public static void main(String[] args) {
        System.out.print("Hello World!");
        System.out.println();// 换行
        System.out.println("Hello World!");
    }
}

class Person {

}

class Animal {

}

 2. 求数值型数组中元素的最大值、最小值、平均数、总和等

/*
 * 算法的考查:求数值型数组中元素的最大值、最小值、平均数、总和等
 * 
 * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,
 * 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。    
 * 要求:所有随机数都是两位数。
 * 
 * [10,99]
 * 公式:(int)(Math.random() * (99 - 10 + 1) + 10)
 * 
 */

package com.atguigu.java;

public class ArrayTest1 {

    public static void main(String[] args) {
        int[] arr = new int[10];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * (99 - 10 + 1) + 10);
        }
        // 遍历
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();

        // 求数组元素的最大值
        int maxValue = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (maxValue < arr[i]) {
                maxValue = arr[i];
            }
        }
        System.out.println("最大值为:" + maxValue);

        // 求数组元素的最小值
        int minValue = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (minValue > arr[i]) {
                minValue = arr[i];
            }
        }
        System.out.println("最小值为:" + minValue);
        // 求数组元素的总和
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("总和为:" + sum);
        // 求数组元素的平均数
        int avgValue = sum / arr.length;
        System.out.println("平均数为:" + avgValue);
    }
}

3. 二分法查找

package com.atguigu.java;

public class ArrayTest3 {

    public static void main(String[] args) {
        // 二分查找
        // 前提:所要查找的数组必须有序
        int[] arr = new int[] { -98, -34, 2, 34, 54, 66, 79, 105, 210, 333 };
        int dest = -34;
        int head = 0;
        int end = arr.length - 1;
        boolean findFlag = false;
        while (head <= end) {
            int middle = (end - head) / 2;
            if (dest == arr[middle]) {
                System.out.println("找到了,下标是:" + middle);
                findFlag = true;
                break;
            } else if (dest < arr[middle]) {
                end = middle - 1;
            } else {
                head = middle + 1;
            }
        }
        if (!findFlag) {
            System.out.println("没有找到");
        }

    }

}

4. 去除重复字符并排序

输入:              字符串
输出:              去除重复字符并排序的字符串
样例输入:       aabcdefff
样例输出:       abcdef

统计出现的过的字符串,并将相应的数组位置为1,然后遍历数组,为1的将对应的字符输出。

package com.huawei;

import java.util.Scanner;

public class Norepeat {
    
    public static String noRepeat(String str){
        
        char[] chars = new char[255];
        int temp;
        
        StringBuffer sb = new StringBuffer();
        
        for (int i = 0; i < str.length(); i++) {            
            temp = str.charAt(i);
            if(chars[temp] == 0){
                chars[temp] = 1;
            }           
        }
        
        for (int i = 0; i < chars.length; i++) {
            if(chars[i] == 1){
                sb.append((char)i);
            }
        }
        return sb.toString();
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入任意字符串:");
        String input = sc.nextLine();
        sc.close();     
        System.out.println(noRepeat(input));
    }

}

运行结果: 

 

5. 句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明
/**
* 反转句子
*
*@param sentence 原句子
*@return 反转后的句子
*/
public String reverse(String sentence);

package com.huawei;

public class StringReverse {

    // 方法一
    public static String reverse1(String sentence) {
        String[] strArr = sentence.split(" ");
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < strArr.length; i++) {
            int len = strArr.length;
            sb.append(strArr[len - 1 - i]);
            if (i < strArr.length - 1) {
                sb.append(" ");
            }

        }
        return sb.toString();
    }

    // 方法二
    public static String reverse2(String sentence) {

        String[] strArr = sentence.split(" ");
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < strArr.length; i++) {
            int len = strArr.length;
            sb.append(strArr[len - 1 - i]);
            sb.append(" ");
        }
        return sb.toString().substring(0, sentence.length());
    }

    public static void main(String[] args) {

        System.out.println(reverse1("I am a boy"));
        System.out.println(reverse1("I am a boy").length());
        System.out.println(reverse2("I am a boy"));
        System.out.println(reverse2("I am a boy").length());
    }

}

运行结果: 

6. 获取一个字符串在另一个字符串中的次数

public static int getCount(String targetStr, String oriStr) {
    int count = 0;
    int index = 0;
    while((index = oriStr.indexOf(targetStr)) != -1) {
        count++;
        oriStr = oriStr.substring(index + targetStr.length());
    }
    
    return count;
}

7. 将字符串中指定部分进行反转

// 方法一
public static String reverseStr(String str, int startIndex,int endIndex) {
    
    char[] chars = str.toCharArray();
    for (int i = startIndex, j = endIndex;i < j; i++,j--) {
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
    }
    
    return new String(chars);
}
public static String reverseStr1(String str, int startIndex,int endIndex) {
    
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < startIndex; i++) {
        sb.append(str.charAt(i));
    }
    
    for (int i = endIndex; i >= startIndex; i--) {
        sb.append(str.charAt(i));
    }
    
    sb.append(str.substring(endIndex+1));
    
    return sb.toString();
}

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值