本篇对javaSE语法刷题训练。
一、选择题15道
第一题
第二题
第三题
第四题
第五题
第六题
第七题
第八题
第九题
解析:
第十题
第十一题
解析:
条件语句:表达式1?表达式2:表达式3
表达式1为真
则返回表达式2
否则返回表达式3
第十二题
第十三题
第十四题
第十五题
二、编程题2道
第一题 字符集合
①用String
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
String str = in.nextLine();
String ret = func1(str);
System.out.println(ret);
}
}
public static String func1(String str){
String string = "";
for(int i = 0; i<str.length(); i++){
char ch = str.charAt(i);
if(!string.contains(ch+"")){
string += ch;
}
}
return string;
}
}
②用StringBuilder (需要new)
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
String str = in.nextLine();
String ret = func1(str);
System.out.println(ret);
}
}
public static String func1(String str){
StringBuilder StringBuilder = new StringBuilder();
for(int i = 0; i<str.length(); i++){
char ch = str.charAt(i);
if(StringBuilder.indexOf(ch+"")<0){
StringBuilder.append(ch);
}
}
return StringBuilder.toString();
}
}
首先遍历这个字符串的每一个字符。传入func1方法。
在func1方法。新建一个字符串。判断这个字符串是否已经出现过
没没出现过则添加进入这个新的字符串。
第二题 合并两个有序的数组
import java.util.*;
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int i = m-1;
int j = n-1;
int k = m+n-1;
while(i>=0 && j>=0){
if(A[i]>B[j]){
A[k] = A[i];
k--;
i--;
}else{
A[k] = B[j];
k--;
j--;
}
}
while(i>=0){
A[k] = A[i];
k--;
i--;
}
while(j>=0){
A[k] = B[j];
k--;
j--;
}
}
}
设置数组指针。
分别指向两个数组的最后一个元素。再设置一个指针。指向合并后数组的最后一个元素
比较这两个数组的最后一个元素大小。
谁大,则依次把这个元素从后往前添加的合并后数组。并将指针减减。
注意:并不减减元素小的那个数组的指针。循环比较。直到 i 或 j 指针有一个小于零。
接着,如果某一个数组元素小于零。另一个没有小于零。
则将这个数组依次添加到合并后的数组中。因为是有序的所以可以直接添加