第一周课后编程练习: 1、编写程序,求计算底边长为a、高为h的三角形的面积,并输出面积s。其中,a、h的值从键盘输入。 提示: (1)三角形面积计算公式为:s=a*h/2 (2) a、h、s三个

  • Post author:
  • Post category:其他


第一周课后编程练习:

1、编写程序,求计算底边长为a、高为h的三角形的面积,并输出面积s。其中,a、h的值从键盘输入。

提示:

(1)三角形面积计算公式为:s=a*h/2

(2) a、h、s三个变量的数据类型最好使用float,用int也可以。

package diyicike;

import java.util.Scanner;

public class kehoubianchenglianxi {

 public static void main(String[] args) {
	 Scanner scan =new Scanner(System.in);
        System.out.println("输入三角形的三边");
        int a = scan.nextByte();
        int b = scan.nextByte();
        int c = scan.nextByte();
        float s =(a+b+c)/2f;
        float S = (float) Math.sqrt(s*(s-a)*(s-b)*(s-c));
        if (a+b>c && b+c>a && a+c>b){
            System.out.println(S);
        }
        else{
            System.out.println("不成立三角形");
        }
 
    }

}

Java Scanner 类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

下面是创建 Scanner 对象的基本语法:

Scanner s = new Scanner(System.in);

接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

使用 next 方法:

ScannerDemo.java 文件代码:

import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 从键盘接收数据 // next方式接收字符串 System.out.println(“next方式接收:”); // 判断是否还有输入 if (scan.hasNext()) { String str1 = scan.next(); System.out.println(“输入的数据为:” + str1); } scan.close(); } }

执行以上程序输出结果为:

$ javac ScannerDemo.java

$ java ScannerDemonext方式接收:

runoob com输入的数据为:runoob

2、输入三个整数a、b、c,求它们的和及平均值,并输出结果。

提示:平均值的数据类型最好使用float,用int也可以。

import java.util.Scanner;

public class class2_3 {


public static void main(String args[]) {


final Scanner in = new Scanner(System.in);

int a = in.nextInt();

int b = in.nextInt();

int c = in.nextInt();

double sum = a + b + c;

double average = (sum)/3.0;

System.out.println(“sum=”+sum);

System.out.println(“average=”+average);

}

}

3、从键盘输入一元一次方程

ax+b=0的2个系数a、b,求方程的根并输出。

提示:题目中所定义变量的数据类型最好使用float,用int也可以。

package com.Squ.www; //创建一个Squ包

import java.util.Scanner;//导入java.util包中的Scanner类(使用此类可以方便的完成输入流的输入操作)

import java.math.BigDecimal;//导入java.math包中的BigDecimal(用来对超过 16位有效位的数进行精确的运算)

//对一元二次方程中各系数的不同情况作讨论,列出不同情况下根的分布,最终求出存在的根

public class Squ { //定义一个公共类—Squ

public static void main(String[]args)

{


double X1,X2;//定义两个解

System.out.println(“方程表达式为:ax^2+bx+c=0”);//显示台输出—方程表达式为:ax2+bx+c=0

Scanner sc=new Scanner(System.in);//用Scanner类获取控制台的输入(即获得从键盘输入的数)

System.out.println(“请输入a的值:”);//显示台输出提示—输入a的值

//每一次从键盘输入值后回车执行后面的内容

double a=sc.nextDouble();//接受控制台输入的数字给形参a赋值

System.out.println(“请输入b的值:”);//显示台输出提示—输入b的值

double b=sc.nextDouble();//接受控制台输入的数字给形参b赋值

System.out.println(“请输入c的值:”);//显示台输出提示—输入c的值

double c=sc.nextDouble();//接受控制台输入的数字给形参c赋值

double t=b

b-4

a

c;//定义一个变量t,且t=b

b-4

a

c,此时t为方程根的判别式

	//用判断语句对方程的系数的不同情况作讨论,并得出根的分布情况
	//① 判断当a、b、c都为0时,方程变为等式0=0;方程不存在!
	if(a==0 && b==0 && c==0)
	{
		System.out.println("方程不存在!");//显示台输出
	}
	//② 当a、b都为0,而c不为0时,方程变为等式c=0,此中不含未知数,方程不存在!
	else if(a==0 && b==0 && c!=0)
	{
		System.out.println("方程不存在!");//显示台输出
	}
	//③ 当a为0,且b、c不为0时,方程变为一元一次方程bx+c=0,此时方程只有一个解
	else if(a==0 && b!=0 && c!=0)
	{
		System.out.println("此方程为一元一次方程");//显示台输出
		double x1 = (-1 * c) / b;//定义一个变量result存放方程的解;此时解为:-c/b
		System.out.println("方程的解为:" + resetValue(x1));
	}
	//④ 以上定义了t=b*b-4*a*c,若t>0,则t的开方为实数,此时方程有两个不同的实根,且两实根为相反数
	else if(t>0)
	{
		System.out.println("方程有两个实根");//显示台输出
		//第一根的算法:((-b) + Math.sqrt(t)) / 2 * a( Math.sqrt是指math方法中的sqrt类,即开方)
		X1= ((-b) + Math.sqrt(t)) / 2 * a;
		//第一根的算法:((-b) - Math.sqrt(t)) / 2 * a
		X2= ((-b) - Math.sqrt(t)) / 2 * a;
		//显示台输出两根的值
		System.out.println("X1="+resetValue(X1));
		System.out.println("X2="+resetValue(X2));
	}
	//⑤ 如果t<0,则t开方后产生虚数,此时方程有一对共轭副根
	else if(t<0)
	{
		//⑥ 如果b不等于0,则其根为共轭副根,根由虚部和实部组成
		if(b!=0)
		{
			X1=(-1*b)/(2*a);//根的实部
			X2=Math.sqrt(-1*t)/(2*a);//根的虚部
			System.out.println("方程有一对共轭复根:");//显示台输出
			//输出时toString()表示用科学计数法输出根的值;加i指虚部的表示法;其中的"+、-"连接根的实部和虚部,形成共轭
			System.out.println("X1="+resetValue(X1).toString()+"+"
					+resetValue(X2).toString()+"i");//输出第一个根的值
			System.out.println("X2="+resetValue(X1).toString() + "-"
					+ resetValue(X2).toString() + "i");//输出第二个根的值
		}
		//⑦ 若b=0,则此时根只有虚部没有实部,是一对共轭复根,实部为0
		else
		{
			X1=Math.sqrt(-1*t)/(2*a);//根中只有虚部
			System.out.println("方程有一对相反虚根:");//显示台输出
			//输出时toString()表示用科学计数法输出根的值;加i指虚部的表示法;其中的"+、-"连接根的实部和虚部,形成共轭,此时实部为0
			System.out.println("X1=0-"+resetValue(X1).toString()+"i");
			System.out.println("X2=0+"+resetValue(X1).toString()+"i");
			
		}
	}
	//⑧ 若t=0,则方程有一个实根
	else if(t==0)
		{
			X1=(-1*b)/2*a;//根的计算
			System.out.println("方程有一个实根");//显示台输出
			System.out.println("方程的解为:"+resetValue(X1));//显示台输出方程的解
		}
		
	}
	
//使用静态方法将定义的值由double类型转换为BigDecimal类型(声明)
private static BigDecimal resetValue(double n) {
	// TODO 自动生成的方法存根
	BigDecimal bd=new BigDecimal(n);//将n的值赋给形参bd
	//返回的值保留两位小数,默认用四舍五入方式 (ROUND_HALF_UP表示遇5进1;setScale规定要保留的小数位数)
	return bd.setScale(2,BigDecimal.ROUND_HALF_UP);
}

}



版权声明:本文为zezeaichirou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。