首页编程java编程java的一维二维是什么意思 java一维数组和二维数组的区别

java的一维二维是什么意思 java一维数组和二维数组的区别

编程之家2023-10-1391次浏览

大家好,今天小编来为大家解答java的一维二维是什么意思这个问题,java一维数组和二维数组的区别很多人还不知道,现在让我们一起来看看吧!

java的一维二维是什么意思 java一维数组和二维数组的区别

在java中如何把一维数码转换成二维数码

1、把char型转换成int类型。

for(int i=0;i<str.length();i++)

{

java的一维二维是什么意思 java一维数组和二维数组的区别

char temp_char=str.charAt(i);

//把字符转换成数字方法一

int temp_int=temp_char-'0';

java的一维二维是什么意思 java一维数组和二维数组的区别

//把字符转换成数字方法二

int temp_int=Integer.parseInt(String.valueOf(temp_char));

}

第一种办法:通过charAt(i),把字符串的每位变成char型,然后用当前字符减去字符0(temp_char-'0'),得到当前字符的int值。

第二种办法:把字符再转成字符串,然后再强制转换成int型。

2、把字符串拆分成一位一位的

第一种方法:循环后charAt(i);

注意:charAt(i)得到的是字符串对应的每位字符,可是不能直接转成int,转成int依然是ASCII值。

第二种方法:char[]temp=str.toCharArray();

注意:char[]里的内容不是字符串的每位字符,而是每位字符的ASCII值。

具体如下:

package cjl;

import java.util.Scanner;

/**

一维码有一种编码是ean13,是一串13位数字。其中第13位是校验码,作用是校验前面12个数字是否正确。

校验方法如下:

1、前12位数字从左起,将所有的奇数位相加得出一个数a,将所有的偶数位相加得出一个数b

2、将数b乘以3再与a相加得到数c

3、用10减去数c的个位数,如果结果不为10则校验码为结果本身,如果为10则校验码为0

请在控制台任意输入一个12位数字,然后输出校验码

author ff

/

public class CheckCode{

public void checkCode(String str)

{

int checkCode=0;

int a=0;//奇数位的和

int b=0;//偶数位的和

for(int i=0;i<str.length();i++)

{

char temp_char=str.charAt(i);

//把字符转换成数字方法一

int temp_int=temp_char-'0';

//把字符转换成数字方法二

//int temp_int=Integer.parseInt(String.valueOf(temp_char));

//System.out.println("temp_char="+temp_char);

//System.out.println("temp__int="+temp_int);

if((i+1)%2==0)//偶数位

{

b+=(int)temp_int;

}

else//奇数位

{

a=a+(int)temp_int;

}

}

int c=a+b*3;

int c_gw=c%10;

int d=10-c_gw;

//System.out.println("a="+a+"b="+b+"c="+c+"c_gw="+c_gw+"d="+d);

if(d==10)

{

checkCode=0;

}

else

{

checkCode=d;

}

System.out.println("checkCode="+checkCode);

}

public void Input()

{

while(true){

Scanner scanner=new Scanner(System.in);

System.out.println("请输入一个12位的数字。。。。。。");

String str=scanner.nextLine();

if((str.length()==12)&&(str.matches("[0-9]+")))

{

checkCode(str);

break;

}

}

}

/**

param args

/

public static void main(String[]args){

CheckCode codeVo=new CheckCode();

codeVo.Input();

}

}

运行结果:

请输入一个12位的数字。。。。。。

111111111111

checkCode=6

扩展资料:

char是计算机编程语言(c、c++、java、VFP等)中可容纳单个字符的一种基本数据类型。

char是一个数据类型,作用是定义字符型变量(单个或是字符串)。

比方int是整形数据,int a=3;这里int是类型,a是整型变量,3是赋值;

char s='A';char是字符类型,s是字符型变量,A是赋值给变量s;

char s[]="c program";char是字符类型,s[]是字符型数组,"c program"是赋给数组的值。

java一维数组和二维数组的区别

在java中数组被看成是一个对象

在定义数组时,有两种定义方法:int[] a和int a[];第二种是C/C++对数组定义方式,对于JAVA建议采用第一种定义方式。

总的原则:任何对象在被调用之前必须先被初始化!

1一维数组的定义

//定义包含三个元素的一维数组

//方法1,先new对象,然后再初始化每个元素

int[] a= new int[3];

a[0]= 1;

a[1]= 2;

a[2]= 3;

方法一要注意的是不能这样写:

int[] a= new int[3];

a={1,2,3};

原因是用new int[3]这种方式创建对象,对象已经被初始化并赋初值为0;可以用下面代码验证:

int[] d= new int[3];

for(int i=0;i<d.length;i++){

System.out.println(d[i]);

}

输入结果是:0 0 0

如果再用a={1,2,3};来赋值,大家知道常量是不能再被赋值的,不可修改的。

//方法2,直接赋初值来创建对象

int[] b={1,2,3};

//方法3,new完对象直接初始化

int[] c= new int[]{1,2,3};

方法三要注意的是不能这样写: int[] c= new int[3]{1,2,3};

即这种方法不能指定维度,原因:如果指定了数组初始化操作,则不能定义维表达式。

注意:如果用new定义数组时,必须指定其维度,这样定义是错误的: int[] d= new int[];

如果无法确定其元素个数,可以这样定义:int[] e={};

2二维数组的定义

基本与一维数组类似

//定义一个3行5列的二维数组

//方法1,先new对象,然后再初始化每个元素

int[][] a= new int[3][5];

a[0][0]=1;

a[0][1]=2;

a[0][2]=3;

//方法2,直接赋初值来创建对象

int[][] b={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3}};

//方法3,new完对象直接初始化

int[][] a= new int[][]{{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3}};

C语言中“二维数组行指针”是什么意思

先从存储的角度对二维数组作一个全面的了解。二维数组在内存中的存储,是按照先行后列依次存放的。从内存的角度看,可以这样说,二维数组其实就是一个一维数组,在内存中没有二维的概念。如果把二维数组的每一行看成一个整体,即看成一个数组中的一个元素,那么整个二维数组就是一个一维数组,它以每一行作为它的元素,这个应该很好理解。

第一,来详细介绍二维数组与指针的关系。-

首先定义个二维数组 array[3][4],p为指向数组的指针。

若p=array[0],此时p指向的是二维数组第一行的首地址,则 p+i将指向array[0]数组中的元素array[0][i]。由以上所介绍的二维数组在内存中的存储方式可知,对数组中的任一元素array[i][j],其指针的形式为:p+i*N+j(N为每一行的长度)。元素相应的指针表示法为:*(p+i*N+j),下标表示法为:p[i*N+j]。

For Example:

array[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

int* p=array[0];

数组array有四个元素,分别为array[0],array[1],array[2],array[3],每个元素为包含3个元素的一维数组,

如array[0]的3个元素为 array[0][0],array[0][1],array[0][2]。

元素array[2][2]对应指针为:array+2*3+2,

指针表示法为:*(array+2*3+2),

下标表示法为:array[2*3+2]。

特别注意:虽然 array[0]与 array都是数组首地址,但两者指向的对象不同,这点要非常明确。array[0]是一维数组的名字,它指向的是一维数组array[0]的首地址,所以*array[0]与array[0][0]为同个值。而 array是二维数组的名字,它指向的是所属元素的首地址,其每个元素为一个行数组。它是以‘行’来作为指针移动单位的,如array+i指向的是第 i行。对 array进行*运算,得到的是一维数组 array[0]的首地址,所以*array与 array[0]为同个值。如果定义 int* p,p为指int类型的指针,指向int类型,而不是地址。故以下操作:p=array[0](正确),p=array(错误)。这点要非常注意。

第二,看看如何用数组名作地址表示其中元素。

对二维数组array,array[0]由 array指向,故*array与array[0]是相同的,依次类推可得 array[i]由array+i指向,*(array+i)与array[i]是相同的。因此,对于数组元素 array[i][j],用数组名表示为*(*(array+i)+j),指向该元素的指针为*(array+i)+j。

注意:数组名虽然是地址,但与指向数组的指针性质不同。指针变量可以随时改变其所指向对象,而数组名不可以,一旦被定义,就不能通过赋值使其指向另外一个数组,但是在Java中则可以。

第三,顺便了解一下不太常用的‘行数组指针’。

对于二维数组array[4][3],与int* p。二维数组名array不能直接赋值给p。原因前面已讲过,两只的对象性质不同。在C语言中,可以通过定义一个行数组指针,使得这个指针与二维数组名具有同样的性质,实现它们之间可以直接赋值。行数组指针定义如下:

int(*p)[3];它表示,数组*p具有三个int类型元素,分别为(*p)[0],(*p)[1],(*p)[2],即 p指向的是具有三个int类型的一维数组,也就是说,p为行指针。此时,以下运算 p=array是正确的。

第四,二维数组作为函数参数。

二维数组作为函数参数一般有两种方式:(1) void func(int**array){...}(2) void func(int array[ ][N])

注意第二种方式一定要指明二维数组的列数

当二维数组名作为函数实参时,对应的形参必须是一个行指针变量。

和一维数组一样,数组名传送给变量的是一个地址值,因此,对应的形参也必须是一个类型相同的指针变量,在函数中引用的将是主函数中的数组元素,系统只为形参开辟一个存放地址的存储单元,而不可能在调用函数时为形参开辟一系列存放数组的存储单元。

int main()

double a[3][4];

……

fun(a);

……

fun(double(*a)[n])

……

好了,文章到此结束,希望可以帮助到大家。

用java做游戏需要什么 Java游戏开发要学什么名狗大全 名狗大全及名字