JAVA第二次驗證設計性實驗報告
[實驗任務一]:素數輸出
(3)實驗報告中要求包括程式設計思想、程式流程圖、原始碼、執行結果截圖、編譯錯誤分析等內容。
1、 實驗內容
(1)計算並輸出3~100之間的素數。
(2)程式設計滿足下列要求:
1)按照每行5個輸出;
2)輸出任意兩個整數之間的所有素數;
3)輸入兩個整數,輸出這兩個整數之間的最大的10個和最小的10個素數。
2、 原始碼
import java.util.Scanner;
public class PrimeNumber {
public
int count=1;
int b=0;
int[] a=new int[100];
Scanner input=new
System.out.println("請輸入起始的數字:");
int n=input.nextInt();
System.out.println("請輸入結束的數字:");
int
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);
}
}