只要能获得三角形的三边长度,就很容易了
假设三边长度为a、b、c
先判断是否为三角形:|a-b|
钝角、锐角用余弦定理,判断cosA(三个点)的正负性
直角用勾股定理
等腰或等边更简单
文件名:testSanjiaoxing.java
import java.util.*;
public class testSanjiaoxing{
public static void main(String args[]){
Scanner in =new Scanner(System.in);
int a ,b,c;
System.out.println("请输入三角形的三边!");
a =Integer.parseInt(in.nextLine());
b =Integer.parseInt(in.nextLine());
c =Integer.parseInt(in.nextLine());
if((a+b)>c){
if(a>=b){
if((a-b)
System.out.println("等边三角形");
}
if(a==b||a==c||b==c){
System.out.println("等腰三角形");
}
if((a*a+b*b)==c*c||(a*a+c*c)==b*b||(b*b+c*c)==a*a){
System.out.println("直角三角形");
}
else{
System.out.println("普通三角形");
}
}
if((a-b)>c){
System.out.println("不能构成三角形");
}
}
if(a if((b-a)
System.out.println("等边三角形");
}
if(a==b||a==c||b==c){
System.out.println("等腰三角形");
}
if((a*a+b*b)==c*c||(a*a+c*c)==b*b||(b*b+c*c)==a*a){
System.out.println("直角三角形");
}
else{
System.out.println("普通三角形");
}
}
if((b-a)>c){
System.out.println("不能构成三角形");
}
}
}else{
System.out.println("请重新输入\n您输入的值不能构成三角形!");
}
}
}
1.可通过extends Thread类或implements Runnable接口来获得线程。由于Runnable实例中不存在Thread对象,因此,Runnable实例不能直接调用Thread中的方法,为了获取Thread对象,必须调用静态的Thread.currentThread()方法,它的返回值是当前在运行的线程。
2.通过编写不信赖于时间分片的线程代码来确保程序的可移植性。好的方法就是频繁地让出对cpu的控制,以便其他线程运行。这种礼让方案允许高度程序选择另一个就绪的线程开始执行。过度使用cpu的线程应当按常规的时间间隔调用yield()方法,确保其不会总是占用处理器。这是因为java可以采用、也可以不采用时间片机制。
四种线程编程方式:不相关的线程、相关但不需同步的线程、互斥线程、相互通信式互斥线程。
通常在互斥线程编程中出现的数据竞争问题,最困难的问题是无法调试。为了避免数据竞争,可以遵循下述简单准则:无论两个线程何时访问同一个数据,必须采用互斥的办法进行处理。互斥是一种保持同步的协议,可以确保当一个线程访问某一特定的数据时,其他线程不会再操作不会再操作同一数据。可以显示地使用 synchronized关键字,或隐式地提供一个用于同步的对象,但指定互斥执行的(需要同步的)代码区时要尽可能地小一些,因为互斥执行会影响系统的性能。
为了把整个类都指定为互斥的,可以把关键字synchronized加到类方法中。把一个类方法指定为同步的,等于告诉编译程序,把这个方法加到一以组必须以互斥运行的方法中。不管存在多少对象,在任何给定的时间里,指定的类只有一个定义为static synchronized的方法能够运行,这隐含着该线程是利用类对象进行同步的。
为了把一个代码块定义为互斥的,可以把关键字synchronized加到代码块的前面。另外,还必须显示地在圆括号中指定一个对象,这就意味着在进入代码区之前必须申请到这个对象锁。如下例:
void raisePressrue()
{
synchronized(o)
{/* * */ }
}
需要声明一个用于同步的对象o,如static Object o = new Object();
当把一个方法定义为互斥的时候,提供互斥的对象是隐式的,也就是方法调用对应的"this"对象。因而synchronized void foo() { /*****/} 等价于 void foo() { synchronized(this) /*****/}