1. 程式人生 > >Java基礎 實驗一:簡單資料型別和流程控制

Java基礎 實驗一:簡單資料型別和流程控制

1.實驗目的 掌握識別符號的定義規則、表示式的組成、各種資料型別及其使用方法、各種運算子的使用及其優先順序控制。掌握分支結構,迴圈結構,continue,break,語句標號等內容。

2.實驗內容 (1)輸入一個三角形的3個邊長,檢查是否能構成一個直角三角形。 (2)任意從鍵盤輸入一個0到9999之間的數,判斷輸入的數是幾位數。 (3)鐵路運貨的運費與路程遠近及貨物的重量有關,設有如下的單位運費:

不足100千米,每噸每千米為1.0元

100千米以上,不足300千米,每噸每千米為0.9元

300千米以上,不足500千米,每噸每千米為0.8元

500千米以上,不足1000千米,每噸每千米為0.7元

1000千米以上,每噸每千米為0.6元

程式設計:對輸入的貨物重量和路程,計算相應的運費。 (4)用迴圈語句程式設計:求1~1000之間的偶數之和。  (5)程式設計求:1!+2!+3!+……+10!。

3.實驗要求 第(2)題加入異常處理機制;第(4)題用for和while迴圈各做一遍。

package exprimentfirst;
import java.util.Scanner;
public class ExprimentFirst {
    Scanner input = new Scanner(System.in);
    public static void main(String[] args) {
        ExprimentFirst demo = new ExprimentFirst();
        demo.firstQuestion();
        demo.secondQuestion();
        demo.thirdQuestion();
        demo.fourthQuestion();
        demo.fifthQuestion();
    }
    public static class RAT {//三角形類
        private double a;
        private double b;
        private double c;
        void isTrueRAT(){//是否可以構成直角三角形
            double temp;
            if(a<b){
                temp=a;
                a=b;
                b=temp;
            }
            if(a<c){
                temp=a;
                a=c;
                c=temp;
            }
            if(a*a-b*b-c*c==0)System.out.println("恭喜,您輸入的三條邊可以構成直角三角形。");
            else System.out.println("失敗,您輸入的三條邊不可以構成直角三角形。");
        };
    }        
    public void firstQuestion(){
        System.out.println("這是問題一:****************************************");
        RAT rat = new RAT();
        System.out.print("請輸入三角形的三條邊:");
        rat.a = input.nextDouble();
        rat.b = input.nextDouble();
        rat.c = input.nextDouble();3
        rat.isTrueRAT();
    }
    public void secondQuestion(){
        System.out.println();
        System.out.println("這是問題二:****************************************");
        int a;
        int count=0;
        System.out.print("請輸入0~9999之間的整數(包括0和9999):");
        a = input.nextInt();
        if(a<0||a>9999){//異常處理
            System.out.print("您輸入的資料不在0~9999之間,請重新輸入:");
            a = input.nextInt();
        }
        do{
            count++;
            a=a/10;
        }while(a!=0);
        System.out.println("您輸入資料的位數為:"+count);
    }
    public void thirdQuestion(){
        System.out.println();
        System.out.println("這是問題三:****************************************");
        double weight;//貨物重量(t)
        double distance;//路程(km)
        double freight = 0;//運費(元)
        System.out.print("請輸入貨物重量(t)和路程(km):");
        weight = input.nextDouble();
        distance = input.nextDouble();
        if(distance <= 100)freight = weight * distance * 1.0;
        else if(distance > 100 && distance <= 300)freight = weight * distance * 0.9;
        else if(distance > 300 && distance <= 500)freight = weight * distance * 0.8;
        else if(distance > 500 && distance <= 1000)freight = weight * distance * 0.7;
        else if(distance > 1000)freight = weight * distance * 0.6;
        System.out.println("需要的運費為:"+freight+"元");
    }
    public void fourthQuestion(){
        System.out.println();
        System.out.println("這是問題四:****************************************");
        int i;
        int sum = 0;
        for(i = 2;i <= 1000;i += 2)sum += i;
        System.out.println("1~1000之間的偶數之和為(for版):"+sum);
        i = 2;
        sum = 0;
        while(i <= 1000){
            sum += i;
            i += 2;
        }
        System.out.println("1~1000之間的偶數之和為(while版):"+sum);
    }
    public void fifthQuestion(){
        System.out.println();
        System.out.println("這是問題五:****************************************");
        int i;
        int j;
        int temp;
        int sum = 0;
        for(i=1;i<=10;i++){
            temp = 1;
            for(j=1;j<=i;j++){
                temp = temp*j;
            }
            sum = sum+temp;
        }
        System.out.println("1!+2!+3!+……+10!的和為:"+sum);
    }
}

測試結果一:

測試結果二: