JAVA属于( )。
A.操作系统
B.办公软件
C.数据库系统
D.计算机语言
答案:D
类声明中,声明抽象类的关键字是 ( )
A.public
B.abstract
C.final
D.class
答案:B
在使用 interface 声明一个接口时,只可以使用()修饰符修饰该接口
A.private
B.protected
C.默认
D.public
答案:D
Math.round(11.5) 等于()
A.11
B.11.5
C.12
D.12.5
答案:C
以下对继承的描述错误的是()
A.Java中的继承允许一个子类继承多个父类
B.父类更具有通用性,子类更具体
C.Java中的继承存在着传递性
D.当实例化子类时会递归调用父类中的构造方法
答案:A
在 java 中 , 一个类()
A.可以继承多个类
B.可以实现多个接口
C.在一个程序中只能有一个子类
D.只能实现一个接口
答案:B
关于以下程序代码的说明正确的
class HasStatic{ private static int x = 100; public static void main(String args[ ]){ HasStatic hs1 = new HasStatic(); hs1.x++; HasStatic hs2 = new HasStatic(); hs2.x++; hs1=new HasStatic(); hs1.x++; HasStatic.x--; System.out.println( "x=" +x); } }
A.5行不能通过编译,因为引用了私有静态变量
B.10行不能通过编译,因为x是私有静态变量
C.程序通过编译,输出结果为:x=103
D.程序通过编译,输出结果为:x=102
答案:D
以下 _____ 不是 Object 类的方法
A.clone()
B.finalize()
C.toString()
D.hasNext()
答案:D
下面哪一项不是 java 类访问权限控制关键字
A.public
B.this
C.private
D.protected
答案:B
java 语言使用的字符码集是
A.ASCII
B.BCD
C.DCB
D.Unicode
答案:D
Fibonacci数列是这样定义的:↓
F[0]·=-0
F[1]·=.1
For each i ≥·2: F[i]·=F[i-1]·+F[i-2]
因此,Fibonacci数列就形如:0;1,1,2,3,5,8,13...,在Fibonacci数列中的数我们称
为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数
字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:
输入为一个正整数N(1·≤ N·≤·1,000,000)
输出描述:<
输出一个最小的步数变为Fibonacci数"<↓
方法1:
public class Main9 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int f1=0; int f2=1; while (f2<n){ int f3=f1+f2; f1=f2; f2=f3; } //循环结束的时候:f1<n<=f2 int min=Math.min(n-f1,f2-n); System.out.println(min); } }
方法2:
public class Main10 { //递归实现斐波那契数 public static int Fibonacci(int n){ if (n==0){ return 0; } if (n==1 || n==2){ return 1; } return Fibonacci(n-1)+Fibonacci(n-2); } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int i=0; int count=0; //在while循环内部,确保Fibonacci(i) <= n while (Fibonacci(i) <= n){ int ret=Fibonacci(i); if (ret < n){ i++; count=ret; }else if (ret==n){ System.out.println(0); } } if (Fibonacci(i-1) < n){ int ret= Fibonacci(i); if ((ret-n) > (n-Fibonacci(i-1))){ System.out.println(n-Fibonacci(i-1)); }else if ((ret-n) < (n-Fibonacci(i-1))){ System.out.println(ret-n); }else { System.out.println(0); } } } }
合法括号序列判断:
题目描述:
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。
public class Parenthesis { public static boolean chkParenthesis(String str, int n) { if (str.length() != n || n %2 !=0 ){ return false; } char[] ch=str.toCharArray(); for (int i = 0; i < ch.length; i++) { if ((ch[i] != '(' ) && (ch[i] !=')')){ return false; } } return true; } }
方法2:
用栈!!栈中存放左括号,当遇到右括号之后,检查栈中是否有右括号,如果有则出栈,如果没有则说明不匹配!!
- 如果字符串的长度不为偶数的时候,直接返回false
- 当长度为偶数,遍历字符串,遇到左括号入栈,遇到右括号,看栈顶元素是否为左括号,如果是,则左括号出栈,继续遍历
- 如果遍历到一个非括号的字符,直接返回false
public class Main11 { public static Boolean chkParenthesis(String A,int n){ if (n % 2 != 0){ return false; } Stack<Character> stack=new Stack<>(); for (char c:A.toCharArray()) { if (c=='('){ stack.push(c); }else if (c==')'){ //右括号优先于左括号出现,非法! if (stack.isEmpty()){ return false; }else if (stack.peek()=='('){//偷看 stack.pop(); } }else {//既不是左括号,有不是右括号的情况! return false; } } return stack.isEmpty(); } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); int n=scanner.nextInt(); Boolean boo=chkParenthesis(str,n); System.out.println(boo); } }