从键盘输入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);
}
}