1. 程式人生 > >JAVA第二次驗證設計性實驗報告

JAVA第二次驗證設計性實驗報告

[實驗任務]素數輸出

3)實驗報告中要求包括程式設計思想、程式流程圖、原始碼、執行結果截圖、編譯錯誤分析等內容。

1、   實驗內容

1)計算並輸出3~100之間的素數。

2)程式設計滿足下列要求:

 1)按照每行5個輸出;

 2)輸出任意兩個整數之間的所有素數;

 3)輸入兩個整數,輸出這兩個整數之間的最大的10個和最小的10個素數。

2、 原始碼

import java.util.Scanner;

 

public class PrimeNumber {

public

 static void main(String[] args) {

        int count=1;

        int b=0;

        int[] a=new int[100];

        Scanner input=new

 Scanner(System.in);

        System.out.println("請輸入起始的數字:");

        int n=input.nextInt();

        System.out.println("請輸入結束的數字:");

        int

 m=input.nextInt();

        input.close();

        for(int i=n;i<=m;i++){

            int j;

            for(j=2;j<i;j++){

                if(i%j==0){

                    break;

                }

            }

            if(j==i){

                a[b]=i;

                b++;

                if(count%5==0){

                    System.out.print(i+" ");

                    System.out.println();

                }else{

                    System.out.print(i+" ");

                }

                count++;

            }

        }

        System.out.println();

        System.out.println("最小的十個素數:");

        for(int c=0;c<10&&c<count;c++) {

            System.out.print(a[c]+" ");

        }

        System.out.println();

        System.out.println("最大的十個素數:");

        for(int c=count-2;c>count-12;c--) {

            System.out.print(a[c]+" ");

        }

}

}

3、 設計思路

利用兩次迴圈;第一個為所求素數範圍的迴圈,這個範圍由使用者輸入;第二個迴圈來判斷是否為素數,若是素數,則存到數組裡;判斷素數時,就有順序,所以存到陣列中的素數也是有是順序的,就可以直接利用陣列輸出最大和最小的十個素數。

4、 實驗截圖

[實驗任務]遞迴方法

1、   實驗內容

使用遞迴方式判斷某個字串是否是迴文( palindrome );

“迴文”是指正著讀、反著讀都一樣的句子。比如“我是誰是我”

使用遞迴演算法檢測迴文的演算法描述如下:

A single or zero-character string is a palindrome.

Any other string is a palindrome if the first and last characters are the same, and the string that remains, excepting those characters, is a palindrome.

2、 原始碼:

import java.util.Scanner;

 

public class Palindrome {

public static void main(String[] args) {

    System.out.println("請輸入需要判斷的任意一個字串:");

    Scanner input=new Scanner(System.in);

    String str=input.nextLine();

    input.close();

    int n=0;

    int m=str.length()-1;

    if(palin(str,n,m))

    System.out.println("這個字串是迴文字串");

    else

    System.out.println("這個字串不是迴文字串");

    }

    public static boolean palin(String str,int n,int m){

        if(n > m)

            throw new IllegalArgumentException();

        if(n == m)

            return true;

        else{

            return (str.charAt(n) == str.charAt(m)) && palin(str,n+1,m-1);

        }

    }

}

3、 實驗思路

先定義一個判斷迴文的方法,先得到字串的長度,利用charAt方法去比較第一個和最後一個字元,如果一樣,前一個後移一位,後一個前移一位,再次比較,如此下去,直到前一個等於後一個,在主方法中呼叫這個方法。

4、 實驗截圖:

 [實驗任務三]統計分析。

1、 實驗內容:

使用者需求:英語的26 個字母的頻率在一本小說中是如何分佈的?

 

2、 原始碼:

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Reader;

import java.util.Scanner;

 

public class Statistics {

 public void createFile()//建立文字

 

 {

        

        String path= "c:\\文章\\統計";//所建立檔案的路徑

        

        File f = new File(path);

        

       if(!f.exists()){

            

            f.mkdirs();//建立目錄

        }

        

        String fileName = "abc.txt";//檔名及型別

        

        File file = new File(path, fileName);

        

        if(!file.exists()){

            

            try {

                file.createNewFile();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            

        }

       

    }            

 public void shuruFile()//輸入文字

   {

 Scanner in=new Scanner(System.in);

 try {

FileWriter fw = new FileWriter("c:\\文章\\統計\\abc.txt");

String world;

 

world=in.nextLine();

fw.write(world);

 

   fw.close();

   } catch (IOException e) {

// TODO 自動生成的 catch 塊

e.printStackTrace();

 }

 

  

   }

public String duqufile()//讀取文字

{String s = null;

File f= new File("c:\\文章\\統計" + File.separator + "abc.txt") ;    // 宣告File物件

         // 第2步、通過子類例項化父類物件

         Reader input = null ;    // 準備好一個輸入的物件

         try {

input = new FileReader(f)  ;

} catch (FileNotFoundException e) {

// TODO 自動生成的 catch 塊

e.printStackTrace();

}    // 通過物件多型性,進行例項化

         // 第3步、進行讀操作

         char c[] = new char[1024] ;        // 所有的內容都讀到此陣列之中

         try {

int len = input.read(c) ;

s=String.valueOf(c);

   } catch (IOException e) {

// TODO 自動生成的 catch 塊

e.printStackTrace();

}        // 讀取內容

        // 第4步、關閉輸出流

         try {

input.close() ;

} catch (IOException e) {

// TODO 自動生成的 catch 塊

e.printStackTrace();

 

        }

         

      

return s;}

 public void tongjufile(String s)//統計文字

 {

String[] a=new String [10000];

int[] b=new int [1000];

int n=0;//一共的字母

 int k=0;//單詞

char c[] = s.toCharArray();

 for(;c[n]!='\0'; n++)//將文字中單詞存入a[]中

 {

 int j=0;

 for(j=n;c[j]!=' ';j++)

 {

 

 }

a[k]=s.substring(n,j);b[k]=1;n=j;

 for(int i=0;i<k;i++)

 if(a[i].equals(a[k]))

 {b[i]++;k--;break;}

k++;

 

}

 k--;

 word[] z=new word[k];//建立類將單詞和個數聯絡起來

 

for(int i=0;i<=k;i++)

{

z[i].num=b[i];

z[i].world=a[i];

}

word t = null,m = null;

for(int i=0;i<k;i++)

{

for(int j=i;j<=k;j++)

{

if(z[j].num<z[i].num)

{

m.deng(t,z[j]);

m.deng(z[j],z[i]);

m.deng(z[i],t);

}

 

}

}

 

System.out.println(z[0].num+"  "+z[0].world);

 

 

 }

public static void main(String[] args) {

// TODO 自動生成的方法存根

Statistics a=new Statistics();

a.shuruFile();

String c;

c=a.duqufile();

a.tongjufile(c);

}

}