需要一个java程序

一个java程序必须有main方法吗?~

一个java程序必须有main方法。
一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。
main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。

通过Eclipse运行程序
启动Eclipse,在菜单中选择“文件 --> 新建 --> Java项目”,弹出对话框:
图1 新建项目
填入项目名称,点击“完成”,创建项目成功,可以看到在 E:\java\workspace 目录下多出了一个Demo文件夹。在菜单中选择“文件 --> 新建 --> 类”,弹出对话框:
图2 创建类
输入类名称,点击“完成”,成功创建一个HelloWorld类:
图3 新创建的类文件
将下面的代码输入到源文件,注意Java是大小写敏感的:public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!");}}点击运行按钮 ,或者在菜单中选择“运行 --> 运行”,就可以看到下方控制台输出了“Hello World!”:
图4 控制台输出
恭喜你,你成功编写并运行了第一个Java程序。打开Demo文件夹下的bin目录,出现了一个 HelloWorld.class 文件,这就是编译生成的字节码。与C、C++不同,Java编译的结果不是可执行文件,而是字节码文件。字节码文件不能直接运行,必须由JVM翻译成机器码才能运行,这就是为什么运行Java程序必须安装JVM的原因。
通过命令行运行程序
当然,你也可以直接输入命令来编译和运行Java。打开CMD,cd 到源文件所在目录,通过 javac filename 命令完成编译,通过 java classname 命令来运行程序,如下所示:
图5 通过命令编译并运行Java程序
在Eclipse中运行程序,实际上也是执行这些命令,并将输出结果显示到控制台。有了Eclipse,编程更加方便。
HelloWorld程序分析
分析上述代码,从程序开始处介绍。public class HelloWorld定义了一个类,类是 “public” 公共类型的,类名为“HelloWorld”。另外,Java 中主类名应该和要保存的 Java 文件名相同,也就是说,这里定义的类名是“HelloWorld”,则文件应该保存为“HelloWorld.java”。public static void main(String[] args)Java 中的主运行方法,它和 C/C++中的main()作用是一样的,就是所有的程序都从“main()”中开始执行。要执行 Java 程序,必须有一个包括主运行方法的类。至于“public static void”的含义,读者可以尝试着去掉,看看编译器会提示什么错误。System.out.println("Hello world");“System.out.println()”是 Java.lang 包的一个方法,用来将字串“Hello world”输出到命令行窗口。

啊,写了好几个小时,方法比较笨,你参考一下:


public class Test {
//定义几名学生
private static final String[] STUDENTS = {"张1", "张2", "张3", "张4", "张5"};
//定义课程名,课程号分别对应为数组下标 1,2,3...n+1,即英语的课程号为1,高数为2,以此类推,可以添加更多课程
private static final String[] CLASS_NAME = {"英语", "高数", "大物"};

public static void main(String[] args) {
//定义一个二维数组,模拟一份成绩单,其中第一列为学生的名字,后面几列分别代表各科成绩,
//数组大小为:学生人数 × (课程数 + 1)
String[][] grades = new String[STUDENTS.length][CLASS_NAME.length + 1];
for (int i = 0; i < STUDENTS.length; i++) {
grades[i][0] = STUDENTS[i];
//这里使用随机数来得到学生的成绩,你也可以直接定义一个写死的数组或者输入进去
for (int j = 1; j < CLASS_NAME.length + 1; j++) {
grades[i][j] = String.valueOf((int) (Math.random() * 100));
}
}


       //这里先把成绩单打印出来,并整理了格式
System.out.println("学生成绩单:");
System.out.println("[姓名|英语 高数 大物]");
for (int i = 0; i < STUDENTS.length; i++) {
System.out.print("[");
for (int j = 0; j < CLASS_NAME.length + 1; j++) {
if (j == 0) {
System.out.print(String.format("%-3s", grades[i][j]) + "|");
} else if (j < CLASS_NAME.length) {
System.out.print(String.format("%-3s", grades[i][j]) + " ");
} else {
System.out.print(String.format("%-3s", grades[i][j]));
}
}
System.out.print("]");
System.out.println("");
}


       //选择操作
System.out.println("----------------------");
System.out.println("请选择操作(1 - 任意学生成绩的查询;2 - 某一门课程的成绩从低到高排序):");
Scanner in = new Scanner(System.in);
int choose = in.nextInt();
if (choose == 1) {
System.out.println("请输入一个学生的名字:");
in = new Scanner(System.in);
String studentName = in.nextLine();
for (int i = 0; i < STUDENTS.length; i++) {
//将输入的学生姓名在成绩单第一列中比较,有该学生则输出其成绩
if (grades[i][0].equals(studentName)) {
System.out.println("学生[" + studentName + "]的成绩为:");
for (int j = 0; j < CLASS_NAME.length; j++) {
System.out.println(CLASS_NAME[j] + ":" + grades[i][j + 1]);
}
break;
}
if (i == STUDENTS.length - 1) {
System.out.println("无此学生成绩,请核对其姓名");
}
}


       } else if (choose == 2) {
System.out.println("请输入一门课程的名字:");
in = new Scanner(System.in);
String className = in.nextLine();
//因为涉及到二维数组的重新排序,我这里定义了一个内部类SortGradeHelper,
//你不喜欢内部类也可以把它单独拿出去弄成一个普通的类,类的定义和排序方式详见这个类
SortGradeHelper sortGrade = new SortGradeHelper();
if ("英语".equals(className)) {
grades = sortGrade.doSort(grades, 1);
} else if ("高数".equals(className)) {
grades = sortGrade.doSort(grades, 2);
} else if ("大物".equals(className)) {
grades = sortGrade.doSort(grades, 3);
} else {
System.out.println("无此课程");
return;
}


           //把新的成绩单打印出来
System.out.println("新的学生成绩单:");
System.out.println("[姓名|英语 高数 大物]");
for (int i = 0; i < STUDENTS.length; i++) {
System.out.print("[");
for (int j = 0; j < CLASS_NAME.length + 1; j++) {
if (j == 0) {
System.out.print(String.format("%-3s", grades[i][j]) + "|");
} else if (j < CLASS_NAME.length) {
System.out.print(String.format("%-3s", grades[i][j]) + " ");
} else {
System.out.print(String.format("%-3s", grades[i][j]));
}
}
System.out.print("]");
System.out.println("");
}
} else {
System.out.println("无效的选择!(1 - 任意学生成绩的查询;2 - 某一门课程的成绩从低到高排序)");
}
}


   //成绩排序小助手
static class SortGradeHelper {
private int sort; //顺序号
private int grade;//成绩
private SortGradeHelper[] sortGrades = new SortGradeHelper[STUDENTS.length];

SortGradeHelper() {
}

SortGradeHelper(int sort, int grade) {
this.sort = sort;
this.grade = grade;
}


       /*我这个二维数组排序的思想是:
1、首先将某一列排出来,比如英语成绩,则把英语这一列先拿出来排序
2、以刚刚排出来的这一列为标准,按照新的行序列,把原成绩单赋值给新成绩单返回
可能有点绕,我举个例子:
假设某成绩单为:
[姓名|英语 高数 大物]
[张1 |7   1   40 ]
[张2 |93  32  78 ]
[张3 |24  25  74 ]
[张4 |8   79  28 ]
[张5 |10  67  45 ]
按照英语进行排列,则先取出英语这一列,生成本类的this.sortGrades数组,该数组具体为:
{ new SortGradeHelper(0,7),
new SortGradeHelper(1,93),
new SortGradeHelper(2,24),
new SortGradeHelper(3,8),
new SortGradeHelper(4,10)
}
则可以看出本列的原顺序为:0,1,2,3,4
之后采用冒泡排序,按照英语成绩从小到大排序,则排序后的this.sortGrades数组为:
{ new SortGradeHelper(0,7),
new SortGradeHelper(3,8),
new SortGradeHelper(4,10),
new SortGradeHelper(2,24),
new SortGradeHelper(1,93)
}
这便得到了新的顺序:0,3,4,2,1
则成绩单所有行都将按照这个新的顺序排列,按照此顺序得到newGrades[][]数组返回
*/


       String[][] doSort(String[][] grades, int classNo) {
//按照课程号取出该课程这一列的成绩
for (int i = 0; i < STUDENTS.length; i++) {
this.sortGrades[i] = new SortGradeHelper(i, Integer.valueOf(grades[i][classNo]));
}
//冒泡排序
SortGradeHelper temp;
for (int i = 0; i < STUDENTS.length - 1; i++) {
for (int j = 0; j < STUDENTS.length - 1 - i; j++) {
if (this.sortGrades[j].grade > this.sortGrades[j + 1].grade) {
temp = this.sortGrades[j];
this.sortGrades[j] = this.sortGrades[j + 1];
this.sortGrades[j + 1] = temp;
}
}
}


           //按照新的顺序重新排列成绩单
String[][] newGrades = new String[STUDENTS.length][CLASS_NAME.length + 1];
for (int i = 0; i < this.sortGrades.length; i++) {
for (int j = 0; j < CLASS_NAME.length + 1; j++) {
newGrades[i][j] = grades[this.sortGrades[i].sort][j];
}
}

return newGrades;
}
}
}


我发的代码老是会挤到一起,所以我再把程序截图给你:

8-24行

25-41行

42-63行

64-80行

81-101行

102-114行

115-142行 对排序方法的注释和举例

143-159行

160-171行完


运行结果:

打印成绩:

成绩单排序:



package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test {
public static void main(String[] args) {
String[] names = new String[10];
double[][] sroce = new double[10][3];

for (int i = 0; i < 10; i++) {
System.out.println("输入第" + (i + 1) + "学生的姓名");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try {
String name = bufferedReader.readLine();
names[i] = name;

for (int j = 0; j < 3; j++) {
switch (j) {
case 0:
System.out.println("请输入英语成绩");
break;
case 1:
System.out.println("请输入数学成绩");
break;
case 2:
System.out.println("请输入语文成绩");
break;
default:
break;
}
bufferedReader = new BufferedReader(new InputStreamReader(System.in));
sroce[i][j] = Double.parseDouble(bufferedReader.readLine());

}
} catch (IOException e) {
e.printStackTrace();
}
}

System.out.println("请输入要排序的科目,1.英语,2 数学,3,英语");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try {
int num = Integer.parseInt(bufferedReader.readLine());
num=num-1;

/*进行排序*/
double a =0;

for(int m=0 ;m<10;m++){
for (int n=0;n<(10-m-1);n++){
if(sroce[n][num]>sroce[n+1][num]){
//调换分数1
a =sroce[n][num];
sroce[n][num]=sroce[n+1][num];
sroce[n+1][num]=a;

//为保证下标一直,调换一维数组
String name = names[n];
names[n]=names[n+1];
names[n+1]=name;

}
}
}
for(String name :names){
System.out.println(name);
}
} catch (IOException e) {
e.printStackTrace();
}

}
}

用java编写一个统计投票结果程序
答:先定义一个学生的对象,里面有名字,和票数两个属性,再定义一个排序函数,返回值为数组,就是取得三个数的数组,打印输出,或者可以自己想一个更加面向对象的结构实现,在简单问题上多用面向对象去思考问题 。import java....

用java写一个汇率的程序:将人民币与美元、欧元、英镑等多种货币的汇率...
答:程序:import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; class test8{ public static void main(String[] args) { JFrame f=new JFrame(); f.setSize(200, 200); ...

JAVA编程:编写一个图形界面的Application程序
答://:SaveContents.java import java.awt.event.*;import java.io.*;import javax.swing.*;public class SaveContents extends JFrame implements ActionListener{ public static void main(String[] args) {new SaveContents(...

在java中编写程序,定义一个学生类
答:代码如下:package exam2;import java.util.ArrayList;import java.util.List;/ 编写一个Java应用程序,该程序包括3个类:定义一个学生类,Student有姓名,学号,选学的课程列表 定义一个课程类:课程名称,课程分数 (1)...

跪谢!求用JAVA编写一个自动贩卖机的程序
答:import java.util.Scanner;public class Shop { private String coffee="咖啡";private String coke="可乐";private String tea="茶";private double coffeeprice=2.00;private double cokeprice=3.00;private double tea...

用Java 写一个两个整数相加的程序
答:代码如下:public class Test { public static int add(int a,int b){ return a+b;} public static void main(String args[]){ Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个数");...

java编写一个“猜数”程序:该程序随机在1到1000的范围中选择一个供...
答:Java源程序附后。本程序的特点是:(1) 文本框只能输入纯数字;(2) 界面较美观;(3) 代码可读性较好,有适当的注释;(4) 窗体一出现就在桌面居中。import java.awt.*;import java.awt.event.*;import java.util.*;...

如何写一个与数据库相连的Java程序
答:四、参考示例程序理解各步操作的意义。下面以MS SQL Server为例说明之。安装、运行该数据库,并准备必要的数据。从以下网址下载MSSQLServer的JDBC连接器包,并将其放到JAVA所在目录下的lib子目录内。注意这是一个可运行的...

一个java程序必须有main方法吗?
答:这样说吧,所有程序至少要有一个main方法。因为java虚拟机运行时,找的接口就是main方法,如果没有此方法,是不运行程序的你说的jsp servlet ,也是有main方法的,不过不是在你的程序中,而在应用服务器中,比如tomcat ...

用JAVA编一个小游戏或者其他程序
答:要用JAVA做一个小项目,类别不限,随便什么程序都行,不用太复杂。最好有注释。谢谢。这个有点太简单了。毕竟是一个小项目啊。谁发个有图形界面的?有没有可玩性强一点的,类似贪吃蛇... 要用JAVA做一个小项目,类别不限,随便什么...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网