本文目錄一覽:
一個JAVA課程實驗的題目,急要,要有注釋
//第二題
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println(“請輸入數據以空格隔開:”);
String[] str=(sc.nextLine()).split(“\\s+”);
double[] ds=new double[2];
for(int i=0;istr.length;i++){
double d=Double.parseDouble(str[i]);
try{
if(d100 || d0) throw new MyException();
}catch(MyException e){
e.printStackTrace();
}
ds[i]=d;
}
for(double d:ds)
System.out.println(d);
}
}
class MyException extends Exception{
public MyException(){
System.out.println(“數據大於100或小於0”);
}
}
求代碼,java實驗,題目如圖
import java.util.Scanner;
import java.util.Stack;
public class DFS
{
// 存儲節點信息
private char[] vertices;
// 存儲邊信息(鄰接矩陣)
private int[][] arcs;
// 圖的節點數
private int vexnum;
// 記錄節點是否已被遍歷
private boolean[] visited;
// 初始化
public DFS(int n)
{
vexnum = n;
vertices = new char[n];
arcs = new int[n][n];
visited = new boolean[n];
for(int i = 0; i vexnum; i++)
{
for(int j = 0; j vexnum; j++)
{
arcs[i][j] = 0;
}
}
}
// 添加邊(無向圖)
public void addEdge(int i, int j)
{
// 邊的頭尾不能為同一節點
if(i == j)
return;
arcs[i – 1][j – 1] = 1;
arcs[j – 1][i – 1] = 1;
}
// 設置節點集
public void setVertices(char[] vertices)
{
this.vertices = vertices;
}
// 設置節點訪問標記
public void setVisited(boolean[] visited)
{
this.visited = visited;
}
// 打印遍歷節點
public void visit(int i)
{
System.out.print(vertices[i] + ” “);
}
// 從第i個節點開始深度優先遍歷
private void traverse(int i)
{
// 標記第i個節點已遍歷
visited[i] = true;
// 打印當前遍歷的節點
visit(i);
// 遍歷鄰接矩陣中第i個節點的直接聯通關係
for(int j = 0; j vexnum; j++)
{
// 目標節點與當前節點直接聯通,並且該節點還沒有被訪問,遞歸
if(arcs[i][j] == 1 visited[j] == false)
{
traverse(j);
}
}
}
// 圖的深度優先遍歷(遞歸)
public void DFSTraverse(int start)
{
// 初始化節點遍歷標記
for(int i = 0; i vexnum; i++)
{
visited[i] = false;
}
// 從沒有被遍歷的節點開始深度遍歷
for(int i = start – 1; i vexnum; i++)
{
if(visited[i] == false)
{
// 若是連通圖,只會執行一次
traverse(i);
}
}
}
// 圖的深度優先遍歷(非遞歸)
public void DFSTraverse2(int start)
{
// 初始化節點遍歷標記
for(int i = 0; i vexnum; i++)
{
visited[i] = false;
}
StackInteger s = new StackInteger();
for(int i = start – 1; i vexnum; i++)
{
if(!visited[i])
{
// 連通子圖起始節點
s.add(i);
do
{
// 出棧
int curr = s.pop();
// 如果該節點還沒有被遍歷,則遍歷該節點並將子節點入棧
if(visited[curr] == false)
{
// 遍歷並打印
visit(curr);
visited[curr] = true;
// 沒遍歷的子節點入棧
for(int j = vexnum – 1; j = 0; j–)
{
if(arcs[curr][j] == 1 visited[j] == false)
{
s.add(j);
}
}
}
} while(!s.isEmpty());
}
}
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int N, M, S;
while(true)
{
System.out.println(“輸入N M S,分別表示圖G的結點數,邊數,搜索的起點:”);
String line = sc.nextLine();
if(!line.matches(“^\\s*([1-9]\\d?|100)(\\s+([1-9]\\d?|100)){2}\\s*$”))
{
System.out.print(“輸入錯誤,”);
continue;
}
String[] arr = line.trim().split(“\\s+”);
N = Integer.parseInt(arr[0]);
M = Integer.parseInt(arr[1]);
S = Integer.parseInt(arr[2]);
break;
}
DFS g = new DFS(N);
char[] vertices = new char[N];
for(int i = 0; i N; i++)
{
vertices[i] = (i + 1 + “”).charAt(0);
}
g.setVertices(vertices);
for(int m = 0; m M; m++)
{
System.out.println(“輸入圖G的第” + (m + 1) + “條邊,格式為“i j”,其中i,j為結點編號(範圍是1~N)”);
String line = sc.nextLine();
if(!line.matches(“^\\s*([1-9]\\d?|100)\\s+([1-9]\\d?|100)\\s*$”))
{
System.out.print(“輸入錯誤,”);
m–;
continue;
}
String[] arr = line.trim().split(“\\s+”);
int i = Integer.parseInt(arr[0]);
int j = Integer.parseInt(arr[1]);
g.addEdge(i, j);
}
sc.close();
System.out.print(“深度優先遍歷(遞歸):”);
g.DFSTraverse(S);
System.out.println();
System.out.print(“深度優先遍歷(非遞歸):”);
g.DFSTraverse2(S);
}
}
JAVA 實驗題
//LeadMain.java
import java.util.*;
public class LeadMain {
public static void main(String args[]){
MyDate mydate=new MyDate();
int y;
Scanner yreader=new Scanner(System.in);
System.out.println(“從鍵盤輸入年份:”);
y=yreader.nextInt();
mydate.setYear(y);
int m;
Scanner mreader=new Scanner(System.in);
System.out.println(“從鍵盤輸入月份:”);
m=mreader.nextInt();
mydate.setMonte(m);
mydate.LeapToJudge();
mydate.DaysOfTheMonth();
mydate.Tomorrow();
}
}
//MyDate.java
import java.util.*;
public class MyDate {
private int year;
private int monte;
private int day;
public boolean LeapToJudge(){
if((year%4==0year%100!=0)||(year%400==0)){
return true;
}
else{
return false;
}
}
public void DaysOfTheMonth(){
if(LeapToJudge()){
System.out.println(year+”年是閏年!”);
if(monte==2){
System.out.println(year+”年”+monte+”月的天數為:29天”);
}
else{
if(monte==1||monte==3||monte==5||monte==7||monte==8||monte==10||monte==12){
System.out.println(year+”年”+monte+”月的天數為:31天”);
}
else{
System.out.println(year+”年”+monte+”月的天數為:30天”);
}
}
}
else{
System.out.println(year+”年不是閏年!”);
if(monte==2){
System.out.println(year+”年”+monte+”月的天數為:28天”);
}
else{
if(monte==1||monte==3||monte==5||monte==7||monte==8||monte==10||monte==12){
System.out.println(year+”年”+monte+”月的天數為:31天”);
}
else{
System.out.println(year+”年”+monte+”月的天數為:30天”);
}
}
}
}
public void Tomorrow(){
Date today=new Date();
Date tomorrow=new Date(today.getTime()+24*3600*1000);
System.out.println(“明天的此刻時間是:”+tomorrow);
}
public void setYear(int years){
year=years;
}
public void setMonte(int montes){
monte=montes;
}
}
求解一道Java實驗題,給出一段代碼,要求把該代碼補充完整使其可以運行,具體要求如下
package xinguan;
abstract class Operation{ //抽象類
public static double numberA= 0;
public static double numberB = 0;
abstract double getResult(); //抽象方法
}
class OperationADD extends Operation{
@Override
double getResult() {
return numberA+numberB;
}
}
class OperationSUB extends Operation{
@Override
double getResult() {
return numberA-numberB;
}
}
class OperationMUL extends Operation{
@Override
double getResult() {
return numberA*numberB;
}
}
class OperationDIV extends Operation{
@Override
double getResult() {
return numberA/numberB;
}
}
class OperationFactory{
public static Operation createOperate(char operate){
Operation oper = null;
switch (operate){
case’+’:
oper= new OperationADD();
break;
case’-‘:
oper= new OperationSUB();
break;
case’*’:
oper= new OperationMUL();
break;
case’/’:
oper= new OperationDIV();
break;
}
return oper;
}
}
public class CalculateDemo {
/**
* @param args
*/
public static void main(String[] args) {
Operation operADD = OperationFactory.createOperate(‘+’);
Operation operSUB = OperationFactory.createOperate(‘-‘);
Operation operMUL = OperationFactory.createOperate(‘*’);
Operation operDIV = OperationFactory.createOperate(‘/’);
operADD.numberA = 15.0;
operADD.numberB = 3;
System.out.println(operADD.getResult());
System.out.println(operSUB.getResult());
System.out.println(operMUL.getResult());
System.out.println(operDIV.getResult());
}
}
因為抽象類是靜態方法 所以 給operADD 那個對象賦值一次就能獲得所有結果。要是去掉static 那麼就需要每個對象 賦值。現在基本滿足你的要求了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/256786.html