1.実験の目的
1). 熟悉java开发工具及配置
2). 熟悉java程序类型,掌握java应用程序结构及书写形式
3). 掌握java程序编写、编译、执行过程
4). 掌握java程序基本语法
5). 熟悉用System进行简单的输入输出
6). 熟悉命令行参数,熟悉基于包装类的数据转换
2.実験的な内容
1.下面的程序有错误请修改并编译运行。
1)public class KY2_2 {
static int i=10;
public static void main(String args[]) {
{
int k=10;
System.out.println("i="+i);
System.out.println("k="+k);
}
System.out.println("i="+i);
System.out.println("k="+k);
}
}
2)class Test {
public static void main(String args[]) {
int 2a = 257;
byte b2 = 2a;
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
3)求一组数字的平均值 */
import javax.swing.JOptionPane;
class Example2_18 {
public static void main(string args[]) {
double nums[5] = {10.1, 11.2, 12.3, 13.4, 14.5};
double result = 0;
for(int i=0; i<5; i++)
{result = result + nums[i]; }
JOptionPane.showMessageDialog(null,"平均值为: " + result / 5); //弹出对话框输出
System.exit(0); //退出程序
}
}
4)import java.io.*;
class KY2_9 {
public static void main(String args[]) throws IOException {
char ch;
System.out.println("按 1/2/3 数字键可得大奖!");
System.out.println("按空格键后回车可退出循环操作.");
while ((ch=System.in.read())!=' ')
{
System.in.skip(2); // 跳过回车键,否则下次读入回车
switch (ch) {
case 1:
System.out.println("恭喜你得大奖,一辆汽车!");
break;
case 2:
System.out.println("不错呀,你得到一台笔记本电脑!");
break;
case 3:
System.out.println("没有白来,你得到一台冰箱!");
break;
default:
System.out.println("真不幸,你没有奖品!下次再来吧。");
}
}
}
2. 补充语句;
1)编写声明不同数据类型变量的程序文件 KY2_1.java,源代码如下,请补充完整:
public class KY2_1 {
public static void main(String args[]) {
System.out.println("字节型变量 b = "+b);
System.out.println("短整型变量 s = "+s);
System.out.println(" 整型变量 i = "+i);
System.out.println("长整型变量 l = "+l);
System.out.println("字符型变量 c = "+c);
System.out.println("浮点型变量 f = "+f);
System.out.println("双精度变量 d = "+d);
System.out.println("布尔型变量 B = "+B);
System.out.println("字符串类对象 S = "+S);
}
}
2)在下面源代码中补充语句,使得输出如下的结果,编译并运行:
8 16 24 32 <>
7 14 21 28 <>
class Test {
public static void main(String args[]) {
int j, k;
for (j = 8; j >1; j--) {
for (k=1; k<=9; k++) {
if (k ==5)
if (j==6)
System.out.print(j*k+“ ”);
}
System.out.println(“<>”);
}
}
}
3プログラミングの質問
2. 通过命令行参数输入整数n和m,求两数的最小公倍数。
3. 编写程序,把字符串“1345”,“23.6”,“45.888”,“222”,“true"分别转换为整型、实型、双精度、逻辑型的基本类型(提示:用各基本类型对应包装类的parseXXX()方法)
3.実験分析、コード、および運用結果
1.
1)public class KY2_2 {
static int i=10;
static int k=10;
public static void main(String args[]) {
{
System.out.println("i="+i);
System.out.println("k="+k);
}
System.out.println("i="+i);
System.out.println("k="+k);
}
}
演算結果:
分析:kのスコープはメイン関数の外側に配置する必要があり、静的メンバーは静的メンバー関数でのみ直接使用でき、さらに静的キーワード
2)class Test {
public static void main(String args[]) {
int a2 = 257;
byte b2 = (byte)a2;
System.out.println("a=" + a2);
System.out.println("b=" + b2);
}
}
演算結果:
分析:識別子の命名規則、数字で始めることはできません
3)求一组数字的平均值
import javax.swing.JOptionPane;
class Example2_18 {
public static void main(String args[]) {
double nums[] = {10.1, 11.2, 12.3, 13.4, 14.5};
double result = 0;
for(int i=0; i<5; i++)
{result = result + nums[i]; }
JOptionPane.showMessageDialog(null,"平均值为: " + result / 5); //弹出对话框输出
System.exit(0); //退出程序
}
}
演算結果:
分析:配列の特定のサイズを書き込むことができず、新規または初期化時に指定する必要があることを宣言します(間接的に指定)
4)
import java.io. *;
class KY2_9 {
public static void main(String args[]) throws IOException {
char ch;
System.out.println("按 1/2/3 数字键可得大奖!");
System.out.println("按空格键后回车可退出循环操作.");
while ((ch=(char)System.in.read())!=' ')
{
System.in.skip(2); // 跳过回车键,否则下次读入回车
switch (ch-'0') {
case 1:
System.out.println("恭喜你得大奖,一辆汽车!");
break;
case 2:
System.out.println("不错呀,你得到一台笔记本电脑!");
break;
case 3:
System.out.println("没有白来,你得到一台冰箱!");
break;
default:
System.out.println("真不幸,你没有奖品!下次再来吧。");
}
}
}
}
演算結果:
分析:read()メソッドは、char型に変換する必要がある文字に対応するASCIIコード値を読み取ります。char型間の算術演算は、int型のASCIIコード値 '1'-'0' <=に自動的に変換されます。 => 49〜48 = 1
2.
1)
public class KY2_1 {
public static void main(String args[]) {
byte b = 123;
short s = 123;
int i = 123;
long l = 123;
char c = 'x';
float f = 123.0F;
double d = 123.000;
boolean B = true;
String S = "123";
System.out.println("字节型变量 b = "+ b);
System.out.println("短整型变量 s = "+ s);
System.out.println(" 整型变量 i = "+ i);
System.out.println("长整型变量 l = "+ l);
System.out.println("字符型变量 c = "+ c);
System.out.println("浮点型变量 f = "+ f);
System.out.println("双精度变量 d = "+ d);
System.out.println("布尔型变量 B = "+ B);
System.out.println("字符串类对象 S = "+ S);
}
演算結果:
分析:注(float f = 123.0F;)これは、デフォルトはdouble型で、その後にfloat型へのFが追加されます
2)}
class Test {
public static void main(String args[]) {
int j, k;
BT:
for (j = 8; j >1; j--) {
for (k=1; k<=9; k++) {
if (k ==5)
break;
if (j==6) {
break BT;
}
System.out.print(j*k+ " ");
}
System.out.println("<>");
}
}
}
演算結果:
分析:GotoはJavaで放棄されています。(break tagname;)(continue tagname;)を使用してジャンプを実現できます
2.
public class Work {
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
int m = Integer.parseInt(args[1]);
int maxF = maxFactor(m, n);
System.out.println(m*n/maxF);
}
public static int maxFactor(int m, int n) { // 求最大公约数
return n > 0 ? maxFactor(n, m%n) : m;
}
}
演算結果:
分析:最初に再帰的に最大公約数を見つけます。最小公倍数は(a * b)/最大公約数に等しくなります
3. public static void main(String args[]) {
String a = "1345";
String b = "23.6";
String c = "45.888";
String d = "222";
String e = "true";
int a1 = Integer.parseInt(a);
float b1 = Float.parseFloat(b);
double c1 = Double.parseDouble(c);
int d1 = Integer.parseInt(d);
boolean e1 = Boolean.parseBoolean(e);
System.out.printf("a1:%s b1:%s c1:%s d1:%s e1:%s",a1,b1,c1,d1,e1);
}
演算結果:
分析: 基本类型都有其对应的包装类和parseXXX方法,注意int 对应 Integer
総括する:
Javaには8つの基本型とパッケージングクラスがあります。つまり、
バイトパッケージクラスはByte
shortパッケージクラスですShort
intパッケージクラスはInteger
longパッケージクラスですLong
floatパッケージクラスはFloat
doubleパッケージクラスですdouble
charパッケージクラスは文字
booleanパッケージクラスですブール値です
ただし、これらのタイプのパッケージはJAVA.langにあります。
このうち、Integer、Byte、Float、Double、Short、LongはすべてNumberのサブクラスであり、CharacterとBooleanはObjectのサブクラスです。
ポップアップウィンドウを表示する:(便利なガジェット)
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog(null,"平均值为: " + result / 5); //弹出对话框输出
Enterキーをスキップします。それ以外の場合は、次回Enterを読みます
System.in.skip(2);
文字を読みます:
system.in.read(); // 读取的为字符对应的ascii码,类型:int
配列メモ:
声明数组不能写具体的大小,需要在new时指定,或初始化时(间接指定)
如 int a[5] = {1,2,3,4,5}; // 错误