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();
}