1.输入若干个单词,每个单词一行,均为小写字母,不会有空行,直到输入#结束(#为单独一行),
单词总数不超过1000;
要求统计共输入了多少不同的单词,每个单词出现了多少次;
按单词出现次数降序输出单词及其出现次数。
import java.util.Scanner;
public class E06 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] array = new String[1000];//定义的字符串数组
System.out.println("请输入小于等于一千个单词(一行一个):");
String x = in.nextLine();
int[] num = new int[100];//记录重复次数的数组
String string = "#";
int i = 0;
while(!string.equals(x)) {//当输入#时候结束输入
array[i] = x;
for(int j=0;j<=i;j++) {//遍历数组看是输入的和array内否存在相同的元素,若是有相同元素,num数组那个脚标位置的数字加1,并跳出循环避免再次遍历的时候重复记录
if(array[j].equals(x)) {
num[j]++;
break;
}
}
x = in.nextLine();
i++;
}
for(int e=0;e<num.length-1;e++) {//将两个数组按照num数组中的元素大小排序(从大到小)
boolean first = false;//定义一个布尔类型在排序完成的时候,第一时间跳出循环
for(int z=0;z<num.length-e-1;z++)// O(n^2)
if(num[z]<num[z+1]) {
int temp= num[z+1];
String aa= array[z+1];
num[z+1]=num[z];
array[z+1]=array[z];
num[z]= temp;
array[z]=aa;
first = true;
}
if(!first) {
break;
}
}
for (int f = 0; f < i; f++) {
if(num[f]!=0) {//因为两个数组定义的时候长度过大,打印的时候在没有放入元素的脚标会被打印为0和null
System.out.println(" 单词为:"+array[f]+" 出现次数为:"+num[f]);// 打印数组
}
}
}
}
//运行正常 2020/3/21
结果:
2.输入一整数n(n>=1),然后将随后输入的n个整数存入一整型数组;
显示该整型数组所有元素;
然后删除数组中多余的重复元素,重复数组元素中只保留第一个元素,
比如数组中存在3个整数5,下标分别为2,9和12,
则删掉下标为9和12的元素,后面元素顺次前移。
最后显示已删除多余的重复元素的整型数组所有元素。
import java.util.Arrays;
import java.util.Scanner;
public class E05 {
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
System.out.println("请输入需要建立的数组长度(请多输入一位用于存放while的条件):");
int z =in.nextInt();
int [] numbers=new int[z];//定义一个数组
System.out.println("请输入大于或等于1个需要的数组元素(用空格隔开):");
int x = in.nextInt();
int cnt = 0;
while(x!=-1) {//输入-1时候终止输入
numbers[cnt]=x;
cnt++;
x=in.nextInt();
}
System.out.println("原数组为:");
for(int i=0;i<cnt;i++)
System.out.printf("%d ",numbers[i]);//打印数组
Arrays.parallelSort(numbers);//对数组进行从小到大的排序
int e=0;
int b=0;
for(int j=1;j<numbers.length;j++) {
if(numbers[j] != numbers[j-1]){//相邻的两个数作比较
numbers[e++]=numbers[j];//如果不相同就依次重新存入数组
b++;//计数器为了后边的打印多余的不会出现0
}
}
System.out.println("\n删除重复的数之后的数组为:");
for(int i=0;i<b;i++)
System.out.printf("%d ",numbers[i]);//打印数组
}
}
// 正常运行 2020/3/21
结果:
3.输出以下回字图像
11111111111111111
12222222222222221
12333333333333321
12344444444444321
12345555555554321
12345666666654321
12345677777654321
12345678887654321
12345678987654321
12345678887654321
12345677777654321
12345666666654321
12345555555554321
12344444444444321
12333333333333321
12222222222222221
11111111111111111
public class E04 {
public static void main(String[] args) {
for(int i=1;i <= 17;++i){
int ii =18-i;
int iii = i < ii ? i:ii;
for(int j = 1;j <= 17;++j)
{
int jj = 18-j;
int jjj = j< jj? j:jj;
System.out.printf("%d", iii<jjj ? iii:jjj);
}
System.out.println();
}
}
}
//正常运行 2020/03/06
结果:
若是想要外围是大一层一层减小只需要把上边代码
iii<jjj ? iii:jjj 改成10-(iii<jjj ? iii:jjj)