您的位置:

java这道题能帮我解答下么(java问题解答)

本文目录一览:

请求大神帮我解答这道java编程题(填写代码)

此题的Employee类设计有缺陷,缺少员工薪水的属性。根据题意只能写出下面的程序:

abstract class Employee {

public abstract double earnings();

}

class YearWorker extends Employee {

@Override

public double earnings() {

return 0;

}

}

class MonthWorker extends Employee {

@Override

public double earnings() {

return 0;

}

}

class WeekWorker extends Employee {

@Override

public double earnings() {

return 0;

}

}

class Company {

Employee[] employee;

double salaries = 0;

Company(Employee[] employee) {

this.employee = employee;

}

public double salariesPay() {

salaries = 0;

//计算salaries

for(int i=0; iemployee.length; i++) {

salaries += employee[i].earnings();

}

return salaries;

}

}

public class HardWork {

public static void main(String[] args) {

Employee[] employee = new Employee[20];

for(int i=0; iemployee.length; i++) {

if(i % 3 == 0) {

employee[i] = new YearWorker();

}

else if(i % 3 == 1) {

employee[i] = new MonthWorker();

}

else if(i % 3 == 2) {

employee[i] = new WeekWorker();

}

}

Company company = new Company(employee);

System.out.println("公司年工资总额:" + company.salariesPay());

}

}

运行结果:

公司年工资总额:0.0

关于JAVA问题的解答

第1题 :下面哪个对类的声明是错误的? (A),Java中没有多继承,C++有多继承,Java只能多实现多个接口;

第2题 某一个子类要继承一个父类,要使用关键字(extends )。

第3个题:下列说法正确的有( C)Java中new 的时候执行构造方法,至于执行哪一个看你new的哪一个构造方法

第4题:有以下方法的定义,请选择该方法的返回类型( D)。java会自动向上转型, (short) x/y*2;这个short强制转型只是转了x,并不是转了结果

第5题:在方法内部使用,代表对当前对象自身引用的关键字是( this)。Java中this是对自己的引用,super向上调用

第6题:以下关于继承的叙述正确的是(A )。在Java中类只允许单一继承

第7题:一个非抽象子类,如果要实现某个接口,则( A)。必须实现该接口中的所有抽象方法

第8题:哪个关键字可以抛出异常? ( throw)。catch中用throw;方法上用throws

第9题:关于以下代码段的说法正确的是( D)。这个虽然可以执行成功但是如果你要去判断相等的话得到时false,string和StringBuffer有着本质的不同,一个不可变一个可变

第10题:下面关键字中,哪一个不是用于异常处理语句( break )。 break用于跳出循环

这道java题怎么做?

答案如下,在电脑测试了下是可以的

import Java.util.Scanner;

public class sy2_1{

public static void main(String[] args) {

Scanner in =new Scanner(System.in);

int []arr=new int[3];

for (int i=0;i3;i++ ) {

arr[i]=in.nextInt();

}

int sum=0;

for (int i=0;i3 ;i++ ) {

sum=sum+arr[i];

}

System.out.print("平均数为"+sum/3);

}

}

java这道题请解析下

第一条输出语句:很明显,也没有争议,先输出2

第二条输出语句:要先明白a++它在输出之前是不会先加1的,所以还是输出2

再输出第二个2后,这时java内部就将a加上1了,所以现在a值为3

第三条输出语句:要先明白++a会在输出之前先立即加上1,所以输出3+1=4

所以最后结果为224,先D

初学java 能帮忙答一下这个题的代码么。越详细越好,谢谢大家

package com;

public class NumberClass {

private int[] array = null;

private int index = 0; 

// 构造方法 

public NumberClass(int num){

//验证参数

if(num = 0 ){

num = 1;

}

this.array = new int[num];

}

public NumberClass(){

this.array = new int[1];

}

// 添加数字方法

public int add(int x){

//判断当前添加的位置是否合法

if(index = array.length-1){

dilatation();

}

//赋值

array[index] = x;

//下标自增

index ++;

return array[index-1];

}

// 获取指定下标位置的数值 

public Integer get(int i){

//判断下标是否超出已赋值区域

if(i  0 || i  index-1){

return null;

}

return array[i];

}

// 取得数组已赋值下标的个数 

public int getCount(){

return index;

}

// 设置一个可用下标的值 

public Integer set(int i,int val){

//判断下标是否超出已赋值区域

if(i  0 || i  index-1){

return null;

}

array[i] = val;

return array[i];

}

// 长度扩容方法 

private void dilatation(){

//取得当前数组的长度

int length = array.length;

//生成扩容后的新数组

int[] array_next = new int[length*2];

//循环原数组对新数组赋值

for(int i=0;ilength;i++){

array_next[i] = array[i];

}

//新数组替换旧数组

this.array = array_next;

}

}