PTA 题目集1-3总结
其实这三次作业我对java面向对象的思想不是很清楚,自己也是按照上学期数据结构的方法去写,然后发现自己的代码太复杂,并且不易看懂。
题目集1知识点:
Scanner 的用法,java的输入和输出、对一些条件的判断,简单可以说跟之前的数据结构解题思想差不多。
题目集2知识点:
函数的调用
.toCharArray()的用法
.length()的用法
数组的定义
System.exit(0)的运用
题目集3知识点:
让我们开始用类的设计来解决题目
substring()的用法
BigInteger的用法
PTA 7-8 判读三角形类型
踩坑心得:
其实这道题就只有一个坑,那就是double 型运算是会出现误差,就比如下面这个例子
import java.util.Scanner; public class Main { public static void main(String[] args) { double a = 1.0; double c= 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1; if(a == c) { System.out.println(true); } else System.out.println(false); System.out.print("a = " + a +" c = "+ c); } }
我们如果自己去看会发现 a和c应该是相等的,但实际上呢?
false a = 1.0 c = 0.9999999999999999
计算机会告诉我们c=0.9999999999999而a=1,他们两并不会相等,所以我们该怎么办呢?
import java.util.Scanner; public class Main { public static void main(String[] args) { double a = 1.0; double c= 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1; if(a - c < 1e-6) { System.out.println(true); } else System.out.println(false); System.out.print("a = " + a +" c = "+ c); } }
我们只需让a-c小于一个很小的数(1e-6就是0.000001)就可以解决该问题
true a = 1.0 c = 0.9999999999999999
源代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner (System.in); double a,b,c; a = in.nextDouble(); b = in.nextDouble(); c = in.nextDouble(); if(a < 1 || a > 200 ||b <1 || b > 200 || c <1 || c > 200 ) { //题目给出的范围 System.out.print("Wrong Format"); } else if((a + b) <= c || (a + c) <= b || (b + c) <= a) { //判断是否是一个三角形 System.out.print("Not a triangle"); } else if (a == b && b == c) { //判断是否是一个等边三角形 System.out.print("Equilateral triangle"); } else if(a == b || b == c || a == c) { if(Math.abs(a*a + b*b -c*c)< 1e-6 || Math.abs(a*a + c*c -b*b) < 1e-6 || Math.abs(b*b + c*c- a*a) < 1e-6) { //判断是否是等腰直角三角形 System.out.print("Isosceles right-angled triangle"); } else { //判断是否是等腰三角形 System.out.print("Isosceles triangle"); } } else if(Math.abs(a*a + b*b -c*c)< 1e-6 || Math.abs(a*a + c*c -b*b) < 1e-6 || Math.abs(b*b + c*c- a*a) < 1e-6) {//判断是否是直角三角形 System.out.print("Right-angled triangle"); } else { //判断是否是普通三角形 System.out.print("General triangle"); } } }

老师的任务罢了