这里是计算机专业大二学生小文,记录一下自己学习java的辛酸过往。
1、从键盘输入数据
编写一个Java Application程序,用户从键盘输入一个浮点数据,程序将输出这个数的平方和三次方。
基础知识:
System.out表示标准输出设备,用System.in表示标准输入设备,默认情况下,输出设备是控制台,输入设备是键盘。
使用java.util.Scanner类创建对象读取来自System.in的输入:
Scanner scanner=new Scanner(System.in)
Scanner对象包括以下读取输入的方法:
- next():读取一个字符串。
- nextByte():读取byte类型的数
- nextShort():读取short类型的数
- nextInt():读取int类型的数
- nextLong():读取long类型的数
- nextFloat():读取float类型的数
- nextDouble():读取double类型的数
实验代码:
//InputFloat.java
import java.util.*;
public class InputFloat
{
public static void main(String args[])
{
double a,b,c;
Scanner reader = new Scanner(System.in); //创建一个Scanner类的对象reader
System.out.println("从键盘输入一个浮点数");
a=reader.nextDouble();
// reader调用nextDouble()方法读取用户从键盘输入的数据,并赋值给a
b=a*a;
c=a*a*a;
System.out.printf("%f的平方是%f\n",a,b); // 输出b
System.out.printf("%f的立方是%f",a,c); // 输出c
}
}
运行结果:
2、通过控制台输入3个整数,作为三角形的三个边长度,判断三角形是否为有效?(有效指任何两边之和大于第三边)。
运行效果如图。
实验代码:
import java.util.Scanner;
public class isTriangle{
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三角形的第一条边长:");
int a = scanner.nextInt();
System.out.println("请输入三角形的第二条边长:");
int b = scanner.nextInt();
System.out.println("请输入三角形的第三条边长:");
int c = scanner.nextInt();
System.out.println(a+"、"+b+"、"+c+"是否可以组成三角形?\n");
if( (a+b)>c && (a+c)>b && (b+c)>a ){
System.out.println("true");
}
else{
System.out.println("false");
}
}
}
运行结果:
小发现:
ystem.out.println()这个方法中println里面只能传一个参数或不传参数,如果想打印出多个参数,
1.需要自己定义一个新的、具有多个参数的println()方法再调用它,且需要保证实参和形参的类型、个数等相同
2.或者使用“+”将想输出的参数与字符串连接起来:println(String+" "+int+" "+...);
例如下面这行代码应该输出的内容为:“a、b、c(表示的数字)是否可以组成三角形?”
System.out.println(a+"、"+b+"、"+c+"是否可以组成三角形?\n");
但由于我最开始写的代码是:
System.out.println("%d、%d、%d是否可以组成三角形?\n",a,b,c);
所以在编译的时候出现了错误:
错误: 对于println(String,int,int,int), 找不到合适的方法
3、编写一个Java Application程序,要求用户从键盘输入两个整型数据,求它们的商。
要求:用命令行传递参数的方法
实验代码:
public class test{
public static void main(String args[]){
int a, b, c;
a=Integer.parseInt(args[0]);
b=Integer.parseInt(args[1]);
c=a/b;
System.out.println(a+"、"+b+"的商为:"+c);
}
}
主方法“public static void main(String args[])”中我们定义了一个字符串类型的数组args[]
要通过命令行传递参数,首先将主方法定义的数组中下标为0(即第一个)的元素经过类型转换后赋值给a,同样,将数组中下标为1(第二个)的元素经过类型转换后赋值给b
类型转换:Integer类中的常用方法parseInt,作用为将数字字符串转换为int数值
命令行传递参数:
在将.java文件编译成 .class文件后,在运行.class时,除了在命令行中输入"java test"命令之外,其后还要跟上a、b的取值,数字之间用空格隔开即可(例:a、b分别取4和3,则应在命令行中输入 java test 4 3)
运行结果:
如果不在运行时输入数值,则运行会出现java数组越界错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at test.main(test.java:4)
更多:
两个数据做除法运算时,可能会出现错误情况,例如:除数为0、输入的内容是非数值的字符等。
此时我们应该考虑给程序添加一个异常处理结构:try{} catch{}
try{}中的内容为可能会出错的代码,catch{}中的内容为try{}中代码出错时的处理方式
例:
public class test{
public static void main(String args[]){
try{
int a, b, c;
a=Integer.parseInt(args[0]);
b=Integer.parseInt(args[1]);
c=a/b;
System.out.println(a+"、"+b+"的商为:"+c);
}
catch(ArithmeticException e){
System.out.println("算术异常");
//此处的算术异常只是其中一种,也有可能出现格式异常或其他异常情况
}
}
}
应用:
4、补充练习
闰年是指年数能被4整除但不能被100整除,或者能被400整除的年份。编写一个程序,用于报告一个年份是否为闰年。该年份可以在程序中给定一个固定值,也可以由键盘输入。
提示:要判断一个整数是否能被另一个整数整除,可以用取模运算符(%)。例如,如果年数%4等于0,那么年数能被4整除。即,如果它除以4的余数为0,则年数能被4整除。
实验代码:
import java.util.Scanner;
public class isLeap{
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int year;
System.out.println("请输入一个年份:");
year=scanner.nextInt();
if(year<=0){
System.out.println("年份错误,无法判断!");
}
else{
if((year%4==0&&year%100!=0)||year%400==0){
System.out.println(year+"年是闰年");
}
else{
System.out.println(year+"年不是闰年");
}
}
}
}
运行结果: