2008年12月6日

java.lang.ExceptionInInitializerError
at com.sun.kvem.util.WindowUtils.setLookAndFeel(Unknown Source)
at com.sun.kvem.midp.MIDP.<clinit>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.sun.kvem.environment.EmulatorInvoker.runEmulatorImpl(Unknown Source)
at com.sun.kvem.environment.EmulatorInvoker.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.kvem.environment.JVM.main(Unknown Source)
Caused by: java.lang.IllegalArgumentException: 90 incompatible with Text-specific LCD contrast key
at java.awt.RenderingHints.put(RenderingHints.java:1057)
at sun.awt.windows.WDesktopProperties.getDesktopAAHints(WDesktopProperties.java:293)
at sun.awt.windows.WToolkit.getDesktopAAHints(WToolkit.java:925)
at sun.awt.SunToolkit.getDesktopFontHints(SunToolkit.java:1882)
at sun.awt.windows.WDesktopProperties.getProperties(WDesktopProperties.java:230)
at sun.awt.windows.WToolkit.updateProperties(WToolkit.java:880)
at sun.awt.windows.WToolkit.lazilyInitWProps(WToolkit.java:832)
at sun.awt.windows.WToolkit.lazilyLoadDesktopProperty(WToolkit.java:821)
at java.awt.Toolkit.getDesktopProperty(Toolkit.java:1746)
at javax.swing.UIManager.<clinit>(UIManager.java:388)
... 13 more



是j2me的...MIDP1.0相关的一个jpx

是JBuilder2005的环境


  NND   火大了   这抛出的什么异常..........怎么搞谁  谁知道.............

posted @ 2008-12-18 16:33 枫舞星萍 阅读(384) | 评论 (1)编辑 收藏

Java语句及其控制结构

import java.applet.Applet; //包引入语句
public class GetSquare extends Applet;//声明类语句

1. 表达式语句

int k, i=3, j=4;
k=i+j;
System.out.println(″k=″+k);

2. 复合语句

class Block {
public static void main(String args[]) {
  int k, i=3, j=4;
  k=i+j;
  System.out.println(″k=″+k);
  {
  float f;
  f=j+4.5F;
  i++;
  System.out.println(″f=″+f);
  }
  System.out.println(″i=″+i);
}
}

选择语句
利用选择语句结构可以根据条件控制程序流程,改变程序执行的顺序。

if语句
if语句的语法格式为:

if (条件表达式)
s1语句;

这是最简单的单分支结构。条件表达式的值为true,就执行s1语句,否则就忽略s1语句。s1语句可以是复合语句。

if…else语句

if语句通常与else语句配套使用,形成二分支结构。它的语法格式为:

if (条件表达式)
s1语句;
else
s2语句;

当条件表达式的值为true,就执行s1语句,忽略else和s2语句;条件表达式的值为false,程序忽略s1语句,执行else后面的s2语句。s1和s2都可以是复合语句。

if…else复合结构

对于复杂的情况,可以嵌套使用if…else语句。它的语法格式为:

if (条件表达式1)
s1语句;
else if (条件表达式2)
s2语句;
else
s3语句;

在这里依次计算条件表达式,如果某个条件表达式的值为true,就执行它后面的语句,其余部分被忽略;所有表达式的值都为false,就执行最后一个else后的s3语句。s1、s2和s3都可以是复合语句。

switch开关语句
虽然嵌套的条件语句可实现多个分支处理,但嵌套太多时容易出错和混乱,这时可以使用开关语句switch处理。实际上开关语句switch也是一种if…else结构,不过它使你在编程时很容易写出判断条件,特别是有很多条件选项的时候。

开关语句switch的语法格式:
switch (表达式) {
case 常量1:
  语句1;
  break;

case 常量2:
  语句2;
  break;
......
default:
  语句n;
}
其中switch、case、default是关键字,default子句可以省略。开关语句先计算表达式,然后将表达式值与各个常量比较,如果表达式值与某个常量相等,就执行该常量后面的语句;如果都不相等,就执行default下面的语句。如果无default子句,就什么都不执行,直接跳出开关语句。

使用开关语句时,注意以下几点:
• case后面的常量必须是整数或字符型,而且不能有相同的值;
• 通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。否则,在第一个满足条件case后面的所有语句都会被执行,这种情况叫做落空。

循环语句

循环可使程序根据一定的条件重复执行某一部分程序代码,直到满足终止循环条件为止。
Java中提供的循环语句有: 确定次数循环(for)、条件循环(while)、先执行后判定循环(do)。

for循环语句

如果希望程序的一部分内容按固定的次数重复执行,通常可以使用for循环。for循环采用一个计数器控制循环次数,每循环一次计数器就计数,直到完成给定的循环次数为止。

for循环的语法格式为:

for (表达式1; 表达式2; 表达式3)
循环体

其中表达式1可以给出计数器的初值,是一个赋值语句;表达式2指出循环结束条件,是一个逻辑表达式;表达式3指出计数器每次的增量,是一个赋值语句。

注意: 计数器可在for语句之前定义,也可在循环括号中定义。计数器增量为1时常写成增量运算的形式,以加快运算速度。根据需要,增量可以大于或小于1。增量计算也可以放在循环体中进行,即把表达式3移到循环体内的适当位置,原位置为空。
使用循环语句时常常会遇到死循环的情况,也就是无限制地循环下去。所以在使用for循环时,要注意初值、终值和增量的搭配。终值大于初值时,增量应为正值,终值小于初值时,增量应为负值。编程时必须密切关注计数器的改变,这是实现正常循环避免陷入死循环的关键。

while循环语句
while循环不像for循环那么复杂,while循环只需要一个条件判断语句,便可以进行循环操作。

while循环的语法格式为:

while (条件表达式) 
循环体

其中while是关键字。每次循环之前都要计算条件表达式,其值为true时,就执行一次循环体中的语句,然后再计算条件表达式,决定是否再次执行循环体中的语句;如果条件表达式的值为false时,就跳出循环体,执行循环体下面的语句。

注意: while循环中的条件表达式是逻辑表达式,所以循环体中一定要有改变条件表达式值的语句,使条件表达式的值有机会变为false,否则会陷入死循环。

do…while循环语句
do…while循环与while循环相反,是先执行循环体中的语句,再计算while后面的条件表达式,若条件表达式值为false则跳出循环;否则继续下一轮循环。

有些情况下,不管条件表达式的值是为true还是false,都希望把指定的语句至少执行一次,那么就应使用do…while循环。

do…while循环的语法格式为:

do {
循环体
} while (条件表达式);

其中do、while是关键字。程序首先执行do下面的循环体,然后计算while后面条件表达式的值,如果其值为true,则重复执行循环体;否则,就结束循环。

与while循环相同,do循环在循环体中也一定要有改变条件表达式值为false的语句,否则会陷入死循环。do…while循环控制并不是很常用,但有时却非常重要,使用时特别注意不要忘记了while语句结尾处的分号“;”。

循环语句嵌套
ex:做个例子 是累计求和的。

public class Sum1 {
public static void main(String args[]) {
  int n=10, sum=0;
  while (n>0) {
  sum=0;
  for (int i=1; i<=n; i++)
    sum+=i;
  System.out.println(″前″+n+″个数的总和为: ″+sum);
  n--;
  }
}
}

循环语句小结
一个循环一般应包括4部分内容。
(1) 初始化部分: 用来设置循环的一些初始条件,计数器清零等。
(2) 循环体部分: 这是反复被执行的一段代码,可以是单语句,也可以是复合语句。
(3) 迭代部分: 这是在当前循环结束,下一次循环开始时执行的语句,常用来使计数器加1或减1。
(4) 终止部分: 通常是一个布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。

跳转语句
跳转语句可以无条件改变程序的执行顺序。Java支持3种跳转语句: break、continue和return。

break语句

break语句提供了一种方便的跳出循环的方法。使用break语句可以立即终止循环,跳出循环体,即使循环没有结束也如此。

break语句的使用示例,输出结果如图3.10所示。

class B {
public static void main(String args[]) {
  boolean test=true;
  int i=0;
  while (test) {
  i=i+2;
  System.out.println(″i=″+i);
  if (i>=10)
    break;
  }
  System.out.println(″ i为″+i+″时循环结束″);
}
}


带标号的break语句

标号是标记程序位置的标识符。break语句只能跳转到循环语句下面的第一条语句上,而带标号的break语句可直接跳转到标号处。正常的break只退出一重循环,如果要退出多重循环,可以使用带标号的break语句。它的语法格式为:

标识符:
…
break 标识符;

做个例子说明

运行该工程,正常情况下可从键盘接受16个输入字符,但当输入b按回车时,break lab1语句就会结束二重循环。

class B1 {
public static void main(String args[]) throws java.io.IOException {
  char ch;

  lab1: // 此处为标号标识符
  for (int i=0; i<4; i++)
  for (int j=0; j<4; j++) {
    ch=(char)System.in.read();
    System.in.skip(2);
    if (ch==′b′)
    break lab1;//跳到标号标识符处
    if (ch==′c′)
    System.out.println(″继续″);

  }
  System.out.println(″结束两重循环″);
}
}


continue语句
continue语句只能用在循环结构中,它跳过循环体中尚未执行的语句,重新开始下一轮循环,从循环体第一个语句开始执行。

下面的可以输出1~9中除6以外所有偶数的平方值

class C2 {
public static void main(String args[]) {
  for (int i=2;i<=9;i+=2) {
  if (i==6)
    continue; 
  System.out.println(i+″ 的平方 = ″+i*i); }
}
}

带标号的continue语句
Java也支持带标号的continue语句,它通常用在嵌套循环的内循环中,可以用标号标出想跳到哪一条语句继续重复执行程序。其语法格式为:

标识符:
…
continue 标识符;

带标号的continue语句的使用

class C3{
public static void main(String args[]) {
  lab1:
  for (int i=1; i<=3; i++)
  for (int j=1; j<=3; j++) {
    System.out.println(″i:″+i+″ j:″+j);
    if (i+j>3) {
    System.out.println(″Continue″);
    continue lab1;
    }
    System.out.println(″i=″+i+″  j=″+j);
  }
}
}


求100~200间的所有素数。用嵌套的for循环做

public class Find {
public static void main(String args[]) {
  System.out.println(″ ** 100~200间的所有素数 **″);
  int n=0;

  outer:
  for (int i=101; i<200; i+=2) {
  int k=15;
  for (int j=2; j<=k; j++)
    if (i%j==0)
    continue outer;
  System.out.print(″ ″+i);
  n++;
  if (n<10)
    continue;

  System.out.println();
  n=0;
  }
  System.out.println();
}
}


return语句
return语句用于方法的返回上,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。return语句通常位于一个方法体的最后一行,有带参数和不带参数两种形式,带参数形式的return语句退出该方法并返回一个值。

当方法用void声明时,说明不需要返回值(即返回类型为空),应使用不带参数return语句。不带参数的return语句也可以省略,当程序执行到这个方法的最后一条语句时,遇到方法的结束标志}就自动返回到调用这个方法的程序中。

带参数的return语句格式为:

return 表达式;

当程序执行到这个语句时,首先计算“表达式”的值,然后将表达式的值返回到调用该方法的语句。返回值的数据类型必须与方法声明中的返回值类型一致,可以使用强制类型转换来使类型一致。

带参数的return语句的使用

class CircleArea {
final static double PI=3.14159;
public static void main(String args[]) {
  double r1=8.0, r2=5.0;
  System.out.println(″半径为″+r1+″的圆面积=″+area(r1));
  System.out.println(″半径为″+r2+″的圆面积=″+area(r2));
}
static double area(double r) {
  return (PI*r*r);
}
}

posted @ 2008-12-06 22:04 枫舞星萍 阅读(846) | 评论 (3)编辑 收藏

JAVA语言基础(二)
Java语言特点

Java是一种
简单、面向对象、分布式(网络适用)、解释型、健壮、安全、结构中立、可移植、高性能、多线程、动态的
计算机程序语言。


Java语言的基本元素
Java包含标识符、关键字、运算符和分隔符等元素。。
标识符

变量以及类和方法都需要一定的名称。所有的标识符都必是以一个字母、下划线或美元符号“$”开头的一串字符,后面的字符可以包含字母、数字、下划线和美元符号。

标识符是由程序员自己定义的名称,可按规则随意选取。不过,Java中有一个标识符命名约定: 常量用大写字母,变量用小写字母开始,类以大写字母开始。如果一个变量名由多个单词构成,第一个单词后面的单词以大写字母开始, Java区分字母大小写,标识符中的大小写字母被认为是不同的两个字符。

关键字

如附件图1

 

  注: 带*号的关键字现在已不使用。


分隔符

1. 注释符
(1) // 注释一行
(2) /*… */一行或多行注释。“/*”开始,最后以“*/”结束,中间可写多行。

2. 空白符
空格、回车、换行和制表符(Tab键)等符号

3. 普通分隔符
. 点,分隔包、类或分隔引用变量中的变量和方法;
; 分号,语句结束的标志;
, 逗号,分隔方法的参数和变量说明等;
: 冒号,说明语句标号;
{} 大括号,用来定义复合语句、方法体、类体及数组的初始化;

[] 方括号,用来定义数组类型及引用数字的元素值;
() 圆括号,定义运算优先级。


PS米米:空白符和分隔符都是区分语言各种基本成份的.

public class mimi { // public关键字  mimi为类名
public static void main(String args[]) {
// public声明公共关键字
// static声明静态方法关键字
//void 空返回值
// main 入口函数

  int i, c;
//赋值  I ,c  为int类型
  ...
}方法的最后的大括号
}入口函数最后的大括号


需注意…括号不要弄混乱  顺序是  由外向内的

数据类型
Java的数据类型可分为: 基本类型,包括整型、浮点型、布尔型和字符型;数组类型,包括一维数组和多维数组;复合类型,包括类和接口。

基本数据类型
Java定义了8种基本数据类型。

如图2
 

PS米米: 一般情况,没有小数点的数字是int型数,带有小数点的数是double型的数,其他数值数据要在数字后面加一个大写或小写字母表示数据类型。

变量的声明
Java存储数据,要它保存到一个变量中。变量在使用前必须有定义,即有确定的类型和名称。声明变量的格式为:

类型 变量名[,变量名]=初值,…;

byte b1, b2;
b1=99,b2=100;
//先声明后赋值

int v1=0, v2=10, v3=18;
  //声明和赋值同时进行


变量类型的转换
变量类型强制转换的格式:
(数据类型)数据表达式
PS:
int a;char b;b=′A′;
a=(int) b;

数值型数据,Java可将低精度的数字赋值给高精度的数字型变量,反之则需要进行强制类型转换,所以int,short,byte赋值给long型时不需要显式的类型转换,反之,将long型数赋值给byte,short,int型时需要强制转换

运算符与表达式
Java的运算符代表着特定的运算指令,程序运行时将对运算符连接的操作数进行相应的运算。运算符和操作数的组合构成表达式,表达式代表着一个确定的数值。表达式在使用上总是先计算后使用,因此,不管一个表达式有多么复杂,其最终结果都是一个有确定类型和大小的数值。
按照运算符功能来分,运算符有7种: 赋值运算符、算术运算符、关系运算符、条件运算符、逻辑运算符、位运算符和其他运算符。
按照连接操作数的多少来分,有一元运算符、二元运算符和三元运算符。另外,算术运算符和赋值运算符可以结合在一起形成算术赋值运算符。
2.3.1 赋值运算符
图3 赋值运算符
由赋值运算符构成的表达式称为赋值表达式。赋值运算符的右边是一个表达式,这个表达式还可以包含一个表达式。例如: a=b=c=0,相当于3个表达式c=0,b=c,a=b。
2.3.2 算术运算符
见图4

算术运算符按操作数的多少可分为一元运算符和二元运算符。一元运算符(+、-、++、--)一次对一个操作数进行运算,二元运算符一次对两个操作数进行运算。

关系运算符
见图5
关系运算符用于两个操作数之间关系的比较。关系表达式的运算结果为布尔值,不是true就是false,操作数可以是常量、变量和表达式。关系表达式常常用作分支结构或循环结构的控制条件。
条件运算符
是三元运算符,条件表达式的格式:
条件表达式 ? 结果1: 结果2;

先计算作为条件的逻辑表达式或关系表达式,条件表达式返回值为true时整个表达式的值为结果1,返回值是false时整个表达式的值为结果2。

逻辑运算符
见图6
解决一些简单条件的判定问题,对较为复杂的条件还得用逻辑运算判定。逻辑表达式最终运算结果为boolean的true或false。“&&”连接的两个表达式中,只要有一个不true,则整个表达式就为false。运算时只要判定左边表达式为false,就可立即得出结论,不再计算右边表达式。所以,最有可能取false值的表达式尽量放在左边,这样可提高表达式的运算速度。“&”在表达式判定上和“&&”相同,惟一不同的是它总是计算两边表达式的值。
“ || ”连接的两个表达式中,只要有一个为true,则整个表达式就为true。运算时只要判定左边表达式为true,就可立即得出结论,不再计算右边表达式。所以,最有可能取true值的表达式尽量放在左边,以提高表达式的运算速度。
“ | ”在表达式判定上和“||”相同,不同之处是它总是计算两边表达式的值。
“ ^ ” 逻辑异或连接的两个表达式同为true或同为false时,整个表达式结果为false,其他情况下取true。
其他运算符
见图7…其实new我一直理解成关键字 - -
运算优先级
  有一堆运算符…..加减乘除之类…我从来不管….一律加()….最高优先级…. 汗

数组
有序数据的集合,其中的每个元素具有相同的数组名,根据数组名和下标来惟一地确定数组中的元素。数组有一维数组和多维数组,使用时要先声明后创建。
这么说不太好懂
Ex:
i=[1,2,3,4,5];
数组i里的1,下标为0,依此类推.

一维数组的声明
一维数组是指一个线性数据序列,声明格式:
数据类型 数组名[]; 或 数据类型[] 数组名;
Ex:
int arr1[];
char [] arr2;
数组的定义中并不为数组元素分配内存,因此“[]”中不用指出数组中元素的个数即数组长度,而且对于如上定义的一个数组暂时还不能访问它的任何元素。
一维数组的创建与赋值
定义数组后,还必须为数组分配内存、初始化。
格式:
数组名= new 数据类型[size]
其中,size指明数组的长度.如:
int intAwp[]=new int[3];
char cAwp[]=new char[5];
数组元素赋值的方法与变量相同.如:
intdd[0]=10;
intdd[1]=20;
intdd[2]=30;

直接赋初值并定义数组的大小
还有就是直接赋初值并定义数组的大小。初值用大括号括起,用逗号做分隔符,初值的个数表示数组的大小。
int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
char c[]={′a′,′b′, ′c′, ′北′, ′方′}

多维数组
多维数组就是数组的数组(说的通俗点)。比如二维数组就是一个特殊的一维数组,它的每个元素是一个一维数组。
二维数组的声明与一维数组基本相同,只是后面再加上一对中括号“[]”。创建二维数组时,可指定各维的长度或至少指定第一维的长度,也可采用直接赋值的方法确定二维数组的长度。此时,按照给定的值序依次填满数组每一行中的元素。更高维的情况差不多。Ex:
int awp1[][]=new int[3][4]; 
int awp2[][]=new int[3][ ];
int awp3[][]={{0,1,2},{3,4,5},{6,7,8}};
二维数组有一个好处是第二维的长度可以不相等。

posted @ 2008-12-06 22:03 枫舞星萍 阅读(320) | 评论 (0)编辑 收藏

java语言基础(一)

本文只提要点


1. java和c++ 、 c的不同.

C面向过程,java和c++面向对象,这里要注意这里指的面向对象只是说一定程度的相对定义。

2. java 语言的类别

j2e..标准版

j2me.. 精简版

j2ee...企业版


3.  java的运算概念

如同 cpp →win


java→ 类(class)→解释器(虚拟机)→各个系统


4. jar  是class文件的集合.

5. 类包含函数

6.初步接触java

class  b007{
  public  static  void  mian(String  args[ ]) {
  System.out.print("How  are you ?");

  }
}


class为类标识符 b007为类名(注意类名的命名是有规则的)
b007后的{ 到结尾的 }  是代表  类 b007 的域
mian 是入口函数  是一个方法

我们来看下 文字表述

b007类包含mian方法,并且main是公有(public)的,是类的静态成员(static),且无返回值(void)

String 是字符串类名    args是命令行参数,可用于接收外界传给java的参数,个数未定。
分隔符[ ] ,表示一维数组。

大体来说java的构成包括标识符、关键字、运算符、分隔符等。

posted @ 2008-12-06 22:01 枫舞星萍 阅读(195) | 评论 (0)编辑 收藏


posts - 4, comments - 4, trackbacks - 0, articles - 0

Copyright © 枫舞星萍