JAVA练习题

更新时间:2024-01-30 18:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.编写程序,实现在窗口中显示“Hello JAVA!”,要求用两类Java程序编写并运行结果。 public class BaseText {

public static void main(String[] args) { System.out.println(\ } }

2. 编写程序,键盘输入两个数,计算并输出它们的积。 public class BaseText {

public static void main(String[] args) { if(args != null && args.length == 2) { try {

double num1 = Double.parseDouble(args[0]); double num2 = Double.parseDouble(args[1]);

System.out.println(\得到的乘积是:\ } catch (NumberFormatException e) { e.printStackTrace(); } }else {

System.out.println(\你输入的数据不正确,输入数据的格式样例为:12.3 4\ } } }

3. 编写程序,接受用户输入1~7之间的整数,若不符合条件则重新输入,利用swith语句输出星期几。 public class BaseText {

public static void main(String[] args) {

if(args != null && args.length == 1 ) { try {

double num = Double.parseDouble(args[0]);

int intValue = (int)num;

switch (intValue) { case 1:

System.out.println(\今天是星期一\ break; case 2:

System.out.println(\今天是星期二\ break;

case 3:

System.out.println(\今天是星期三\ break; case 4:

System.out.println(\今天是星期四\ break; case 5:

System.out.println(\今天是星期五\ break; case 6:

System.out.println(\今天是星期六\ break; case 7:

System.out.println(\今天是星期天\ break; default:

args = null;

System.out.println(\请重新输入\ break; }

} catch (NumberFormatException e) { e.printStackTrace(); } }else {

System.out.println(\你输入的数据不合法\ } } }

4. 编写程序,包括一个标签、一个文本框和一个按钮,当单击按钮时把文本框中的内容复制到标签中显示。

package test; import java.awt.Toolkit; import javax.swing.SwingUtilities; import javax.swing.UIManager; import java.awt.Dimension; public class Application { boolean packFrame = false; public Application() { Frame1 frame = new Frame1(); if (packFrame) { frame.pack(); } else { frame.validate(); } Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager. getSystemLookAndFeelClassName()); } catch (Exception exception) { exception.printStackTrace(); } new Application(); } }); } } package test; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import java.awt.Color; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JTextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Frame1 extends JFrame { JPanel contentPane; JLabel jLabel1 = new JLabel(); JButton jButton1 = new JButton(); JTextField jTextField1 = new JTextField(); public Frame1() { try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); this.getContentPane().setBackground(new Color(139, 154, 255)); setSize(new Dimension(400, 300)); setTitle(\测试\ jLabel1.setText(\以前的数据\ jLabel1.setBounds(new Rectangle(88, 60, 195, 32)); jButton1.setBounds(new Rectangle(70, 175, 195, 33)); jButton1.setText(\点我看看\ jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this)); jTextField1.setText(\ jTextField1.setBounds(new Rectangle(88, 109, 199, 31)); contentPane.add(jLabel1); contentPane.add(jButton1); contentPane.add(jTextField1); } public void jButton1_actionPerformed(ActionEvent e) { this.jLabel1.setText(this.jTextField1.getText()); this.jTextField1.setText(\ } } class Frame1_jButton1_actionAdapter implements ActionListener { private Frame1 adaptee; Frame1_jButton1_actionAdapter(Frame1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } }

编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。 (十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。) import java.io.*; class StringToBinary {

static boolean num=true; char [] c=null; int x;

public void isNumberic(String s) //extends NumberFormatException {

c=s.toCharArray(); for(int i=0;i

if(Character.isDigit(c[i])==false) {

num=false;

System.out.println(\ } }

if(num==true&&Integer.parseInt(s)

num=true; } else {

System.out.println(\超出了int范围\ throw new NumberFormatException(s); } }

public void stringToBinary(String s2) //throws NumberFormatException {

String s=new String(); x=Integer.parseInt(s2); while(x!=0)

{

if(x%2==1) { s+=\ x=x/2; }

else if(x%2==0) { s+=\ x=x/2; } }

System.out.println(\ System.out.println(new StringBuffer(s).reverse()); }

public static void main(String [] args) {

String s1=new String();

System.out.println(\ try {

BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); s1=bfr.readLine(); /* if(s1==null) {

System.out.println(\ throw new NullPointerException(); }*/ }

catch (Exception e ) {

e.printStackTrace(); }

StringToBinary stb=new StringToBinary(); stb.isNumberic(s1); if(num==true) {

stb.stringToBinary(s1); } } }

练习数组在java中的应用.主要侧重于类型地转换 import java.io.*; class Contact

{

static int [] num=new int[1024];

public static void convert() {

StringBuffer strb=new StringBuffer();//利用构造函数与直接附值为NULL时其结果是不一样的。 for(int i=0;i

//System.out.println(num[i]);

//strb+=num[i].toString()+\这一句其实是不对的,因为int型的是没有这个toString方法的。 strb=strb.append(num[i]+\ }

System.out.println(strb); }

public static void main(String [] args) {

/*String str;//如何改写成外部输入的方式。如何将输入的数字串转换成整型数组。 System.out.println(\

BufferedInputStream bis=new BufferedInputStream(new InputStream(System.in)); str=Integer(bis.read()); int len=str.length(); for(int i=0;i

num[i]=Integer.parseInt(str.) } */

convert(); } } /* 注意点:

1、使用String与使用StringBuffer的区别; 2、改进数组附值由直接附值改为通过界面附值。

3、int型数组是没有什么方法使用的,因为他不是lang包的继续者。 */

本题遇到的一些主要问题:1、char数组的附值问题。误以为是ch={a,b,c,x}这种方式附值。2、对类的初始化顺序要不要的进行强化。3、对方法的选择(由于对类不了解,所以应该使用什么样的方法通过查资料,最终是找到了解决的方法。)

import java.io.*; import java.util.*; class FindChar

{

/*public static void find(char [] ch,char ch1) //这个方法由于使用的Arrays.binarySearch()方法在使用前需要排序,那样就不能够正确返回所需要的结果。 {

char [] c=new char[1024]; char ch0; c=ch; ch0=ch1;

if(c==null||(c!=null&&c.length==0)) {

System.out.println(\arrary is null!\ throw new IllegalArgumentException(); }

else if(c[0]==ch1) {

System.out.println(\ch1's postion:\ } else {

System.out.println(\ch1's postion:\ } }*/

public static void find(char [] ch,char ch1) {

char [] c=new char[1024]; char ch0; int i; c=ch; ch0=ch1;

boolean firstChar=false;

if(c==null||(c!=null&&c.length==0)) {

System.out.println(\arrary is null!\ throw new IllegalArgumentException(); } else

for(i=0;i

if(firstChar==false&&c[i]==ch0)

{

firstChar=true;

System.out.println(\ch1's postion:\ } }

if(firstChar==false) System.out.println(-1); }

public static void main(String[] args) {

//下边重新开始新的代码编写。 //这个当中遇到的一些问题:

//1、char数组的附值问题。误以为是ch={a,b,c,x}这种方式附值。 //2、对类的初始化顺序要不要的进行强化 char [] ch=new char[10]; char ch1='x'; //ch={'c'}; //find(ch,ch1);

//ch={a,b,c,x};原来这种附值方式是int型数组附值的方式,难怪会报错。 ch=\ find(ch,ch1);

ch=\这种情况他所查找的字符位置就会问题,但下边那情况就不会出问题,不知道这是什么原因造成的。

System.out.println(ch.length);//上述问题这所以会出现是由于我使用binarySearch()方法的原因,因为他在查找所要的字符时是以 find(ch,ch1);

ch=\xx\ find(ch,ch1);

ch=\ find(ch,ch1);

ch=\ find(ch,ch1);

/*下边的代码是第一次经过大约两天的时间写的,当中出现了许多的问题,刚开始尝试利用Vector类来做,没有成功,后经查资料,利用Arrays类来做,但对报出异常这个问题

理解不够透彻,经咨询传智博客的老师才得知问题的症结所在,其实有许多东西不是你不可能做出来,关键在于你对概念的理解程度。其实我在写这个程序时一直都在试探该去怎么做

因为我根本就不知道怎么样才能做,只是看着问题,根据他的思路,去找解决问题的方法,试探性的去解决。出了问题然后再去想为什么,这恐怕也是一个必经的过程,至少在打劳基础的

时候是非常需要的。另外有一个知识点就是:怎么样来判断数组为空这个问题很重要。 /*FindChar fc=new FindChar(); String str=null;

char [] ch=new char[1024]; char ch1=0;

System.out.println(\input the char sequence :\ try {

BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));

str=bfr.readLine(); ch=str.toCharArray(); }

catch (Exception e ) {

e.printStackTrace(); }

System.out.println(\input the char :\ try {

ch1=(char)System.in.read(); }

catch (Exception e ) {

e.printStackTrace(); }

fc.find(ch,ch1);*/ } }

能过上面的这个程序的编写,我体会到了一些新的问题。

首先:解决问题的思路太过单一,一直就只是想着Java类中会不会这这样的方法,当然能够找到这样的方法也会

学到不少东西,同时也是对Java基本类的理解和认识,但不能仅停留在这样一个表面,想通过一个方法就搞定一个

问题,这种思想,不可取。以后的思路是这样一个过程,拿到一个问题,首先要分析出他解决问题的思路,当然这

个问题已经给出了思路,这点在解决问题当中是必不可少的。其次尽量通过各种方式,利用Java中的类来解决目前

的问题。

其次:刚开始的问题要不断的尝试,然后从中总结经验。

1、写程序输出下列格式:

* * * * * * * * * * ********** * * * * * * * * * * ********** * * * * * * * * * * ********** * * * * * * * * * * **********

2.试编写一程序,用以判断一个五位整数n各位数字的奇偶性,并求出它们的和。 运行结果提示 偶数个数: 2 奇数个数: 3

3、根据题中给出的三门课程的成绩(语文:90、英语:80、数学:70),编写程序,输出这三门课程的总分数、平均分数和批注(平均分70以上为优秀,70以下为普通)。 运行结果提示 总分:240 平均分:80.0 批注:优秀

4、某个食品店的店员不懂计算,请你为他编写一程序,用于计算他在售货时应该找给顾客的零钱。 运行结果提示

顾客支付金额:1000 顾客消费金额:252 <余额细目> 余额:748 一百元: 7 五十元: 0 二十元: 2 五元: 1 二元: 1 一元: 1

5、编写一个程序,输出一个九九乘法表 输出结果提示: 1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9

6 比较3个数大小是在a>(b>c? b:c)?a:(b>c? b:c)里比较的。首先看 (b>c? b:c)运算符 ? :他是比较 b 和c的大小如果b大于c那么选b 小于c的话取c 然后再和前面的a比较。后面的 a:(b>c? b:c));就是比较的取值, 比较是如果a大就选a , 如果a 小的话就取里面的结果了。 里面的就是在运算一遍比较一下b和c的大小

了。 ....................=((a>b)?a:b))>(c=(c>d)?c:d)))?a:c);

7.求出三个整数的最小值。 math 类

8.对数组拷贝要求用两种方法实现 system 拷贝

9. 对数组排序要求用两种方法实现 冒泡 array 10. 对String[] arr={\进行冒泡排序 11.

String s = \

计算表示式的值 有几个加号不确定

12.定义两个类Dog,SmallDog,SmallDog继承Dog 说明一:关于Dog

两个属性,狗的名字(dogName,String),狗的年龄(dogAge,int) 一个方法,dogWalk(),打印一句话简单描述狗走路的样子

一个构造方法,无参数,在此构造方法中初始化dogName,dogAge 说明二:关于SmallDog

继承Dog,不添加任何属性和方法

最后,在测试类中的main方法中生成SmallDog类的对象,访问属性dogName和dogAge,并打印出他们的值;调用dogWalk(),看看效果

13.在第1题的基础做修改 说明:关于SmallDog

添加两个set方法分别能够设置属性dogName和dogAge的值,在测试类中的main方法中调用这两个方法为属性设置值,再次访问这两个属性并打印看看和

第二题的打印输出是否相同

重写dogWalk(),打印一句话具体描述小狗走路的样子,在测试类main方法中调用dogWalk(),看看和第二题中的调用效果是否有变化

14.定义一个类BankAccount(银行帐户)

属性有\账号\、\储户姓名\、\储户身份证号\、\日期\、\金额\、\余额\、\累计余额\,属性要求是私有的

方法有\存款\、\取款\、\查询\、\计算利息\,方法要求是公有的 15 . 定义一个类Student(学生)

属性:姓名,学号,性别,专业,班级,籍贯,入学时间,学业状况,属性要求是私有的

方法:入学,升级,留级,毕业,方法要求是公有的

.定义一个交通工具类(Transport)和它的两个子类;汽车类(Vehicle)和飞机类(Airplane)

说明一:关于Transport

两个属性,速度(speed,int)载重量(load,float) 两个get方法,能够取得两个属性的值 一个构造方法,能够初始化这两个属性

一个show()方法,调用俩个get方法,取得两个属性的值并打印 说明二:关于Vehicle 继承Transport

添加4个属性,车轮数(wheels,int),车重量(weight,float) 发动机类型(enginertype,String)发动机数量(enginers,int) 添加两个get方法,能够取得两个新添加属性的值

一个构造方法,调用父类的构造方法,并且能够初始化新添加的两个属性 一个show()方法,调用父类的show()方法打印speed和load两个属性,调用新添加的两个get方法取得wheels和weight属性的值并打印 说明三:关于Airplane

和说明二的要求一致,只要求新添加的两个属性为发动机类型(enginertype,String)发动机数量(enginers,int)

最后,在测试类main方法中生成汽车类和飞机类的对象

16.定义一个类Employee(雇员)

三个属性,雇员姓名(name,String),薪水(salary,double),开始雇佣时间(hireDay,Date)

一个构造方法,带参数,初始化各个属性,特别要求带有年月日的参数,并利用GregorianCalendar日历类生成日期并转化成对应的Date类的日期

对于每个属性添加一个set和get方法(建议使用Eclipse的Refactor中的Encapsultion Fields)

一个实现增长薪水的的方法raiseSalary,传递一个double类型的薪水增长率

一个Employee类的数组,生成三个雇员类的对象填充到数组中

17.定义一个类Manager(经理)继承类Employee(雇员) 添加一个属性,奖金(bonus,double)

添加一个set方法能够设置bonus属性的值

在构造方法中调用父类的构造方法,并初始化bonus为0

重写父类的getSalary方法,在子类的getSalary方法中调用父类的getSalary方法,返回添加了奖金的全部薪水

一个Employee类的数组,生成两个雇员类的对象和一个经理类的对象,填充到数组中。使用经理类对象所对应的数组元素看看能不能调用在Manage类中新添加的方法

定义一个类Card(普通卡)和它的一个子类SoldCard(汽车销售卡) 说明一:关于Card

四个属性,卡号(cardNumber,long)密码(password,int)连接卡号(connnectNumber,String)连接标志(connectFlag,boolean) 三个方法, 一个方法setCard设置卡的卡号和密码,一个方法getCard传入卡号和密码的值来判断是否能够连接,一个方法show来显示卡的连接状态、卡号、密码、连接卡号

两个构造方法,一个默认构造方法,一个带参数的构造方法并初始化类中的各个属性

说明二:关于SoldCard 继承Card

添加属性,汽车价格(price,double),汽车出厂的年(reachYear,int)、月(reachMonth,int)、日(reachDay,int),客户名称(clientName,String),汽车类型(cardType,String),销售日期(soldDate,String)

两个构造方法,一个默认构造方法,一个带参数的构造方法调用父类的无参的默认构造方法并且初始化类中的各个属性 重写父类的setCard方法,在此方法中调用父类的setCard方法,并且能够设置新添加的各个属性

添加一个方法getPrice,要求只有已经连接的客户才能调用此方法,提示调用父类中的getCard方法判断客户的连接状态 重写父类的show方法,在此方法中调用父类的show方法,并显示其他新添加的属性

18.String s = \ 请输出所有子串 113 ere qqq yyui

19. 编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转, “To be or not to be\\。

添加属性,汽车价格(price,double),汽车出厂的年(reachYear,int)、月(reachMonth,int)、日(reachDay,int),客户名称(clientName,String),汽车类型(cardType,String),销售日期(soldDate,String)

两个构造方法,一个默认构造方法,一个带参数的构造方法调用父类的无参的默认构造方法并且初始化类中的各个属性 重写父类的setCard方法,在此方法中调用父类的setCard方法,并且能够设置新添加的各个属性

添加一个方法getPrice,要求只有已经连接的客户才能调用此方法,提示调用父类中的getCard方法判断客户的连接状态 重写父类的show方法,在此方法中调用父类的show方法,并显示其他新添加的属性

18.String s = \ 请输出所有子串 113 ere qqq yyui

19. 编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转, “To be or not to be\\。

本文来源:https://www.bwwdw.com/article/f5mw.html

Top