從鍵盤輸入3個浮點數作爲三角形三邊的邊長,試計算三角形的面積。
遇到問題1: while 裏面不兼容
解決: 改成while(1<20) 設置while只是想爲了當輸入錯誤的時候重新輸入 輸入正確的時候自動跳出 (沒有將選擇是否跳出的功能編出 ) 所以括號裏面填了一個恆等式
遇到問題2:找不到類
解決方案:在文檔開頭加入包 如下import java.util.*;
遇到問題三:無法從靜態上下文中引入非靜態的變量
解決方案:開始的時候不理解爲什麼會出現這個問題 後來發現因爲定義的時候把變量放在了主函數外面 這時候變量相當於類的成員 當然是非靜態的了 將變量放入函數裏面 問題迎刃而解
遇到問題四:找不到類
解決方案:在文檔開頭加入包 如下import java.lang.Math; 未果 不知道爲什麼
在函數前加Math. 具體如下:area=Math.sqrt(s*(s-a)*(s-b)*(s-c)); //
程序運行如下:
源代碼
import java.io.*;
import java.lang.Math;
import java.util.*; //
/**
* 從鍵盤輸入3個浮點數作爲三角形三邊的邊長,試計算三角形的面積。
* @author august
* @version 1.0
* @since 1.0
*/
public class TriArea{
public static void main(String args[])
{
double a,b,c,s,area; //三邊邊長 s爲中間變量 area爲面積 //爲函數裏面的暫時自變量
while(1<20){
System.out.println("Please input the side");
Scanner input = new Scanner(System.in);
a = input.nextDouble();
b = input.nextDouble();
c = input.nextDouble();
if((a+b>c)&&(b+c>a)&&(a+c>b)){
s=(a+b+c)/2;
area=Math.sqrt(s*(s-a)*(s-b)*(s-c)); //
System.out.println("The area is "+area);
break;
}
else System.out.println("The input is wrong. please again");
}
}
}
作業二: * 編程序,顯示螺旋方陣:
* 1 2 3 4
* 12 13 14 5
* 11 16 15 6
* 10 9 8 7
源程序如下:
import java.io.*;
import java.util.*; //
public class ScrewSquare{
public static void main(String args[])
{
System.out.println("Please input the side");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] arc = new int[100];
int c = 1;
int v = 0;
for(int i = n-1; i >= 0; i -= 2){
arc[v] = c;
for(int j = 0; j < i ; j++){
arc[v] = c++;
v++;
}
for(int j = 0; j < i ; j++){
arc[v] = c++;
v += n;
}
for(int j = 0; j < i ; j++){
arc[v] = c++;
v--;
}
for(int j = 0; j < i ; j++){
arc[v] = c++;
v -= n;
}
v += n+1;
}
for(int i = 0; i<n; i++){
for (int j = 0; j<n;j++){
System.out.print('/t');
System.out.print(arc[i*n+j]);
System.out.print('/t');
}
System.out.print('/n');
}
}
}
作業三:
public class Queen {
int num; // 記錄方案數
int[] queenline = new int[8]; // 記錄8個皇后所佔用的列號
boolean[] col = new boolean[8]; // 列安全標誌
boolean[] diagonal = new boolean[16]; // 對角線安全標誌
boolean[] undiagonal = new boolean[16]; // 反對角線安全標誌
void solve(int i) {
for (int j = 0; j < 8; j++) {
if (col[j] && diagonal[i - j + 7] && undiagonal[i + j]) {
// 表示第i行第j列是安全的可以放皇后
queenline[i - 1] = j + 1;
col[j] = false; // 修改安全標誌
diagonal[i - j + 7] = false;
undiagonal[i + j] = false;
if (i < 8) // 判斷是否放完8個皇后
{
solve(i + 1); // 未放完8個皇后則繼續放下一個
} else // 已經放完8個皇后
{
num++;
System.out.println("/n皇后擺放第" + num + "種方案:");
System.out.println("行分別爲1 2 3 4 5 6 7 8 ");
System.out.print("列分別爲");
for (int i1 = 0; i1 < 8; i1++)
System.out.print(queenline[i1] + " ");
}
col[j] = true; // 修改安全標誌,回溯
diagonal[i - j + 7] = true;
undiagonal[i + j] = true;
}
}
}
public static void main(String[] args) {
Queen q = new Queen();
System.out.println("////八皇后問題////");
q.num = 0; // 方案初始化
for (int i = 0; i < 8; i++)
// 置所有列爲安全
q.col[i] = true;
for (int i0 = 0; i0 < 16; i0++)
// 置所有對角線爲安全
q.diagonal[i0] = q.undiagonal[i0] = true;
q.solve(1);
}
}