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);
}
}
轉載于:https://www.cnblogs.com/fuheishi/p/9790382.html
總結
以上是生活随笔為你收集整理的JAVA第二次验证设计性实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学——函数极限知识以及sympy库的l
- 下一篇: luogu P1549 棋盘问题(2)