⑴ java中二维数组第一个下标为0
int[][] a=new int[0][0];
合法,不知道你那个serise是什么值,但是根据你的意思应该是合法的.
java中数组的长度可以为零,这个可以应用于一些特定的情况,很多情况得到一个零长度的数组要比一个NULL的有用的多。
就像一个空的ArrayList比一个NUll好一样,程序中不用专门去做NULL的判断,直接拿来循环取值就行,虽然取不到.
⑵ java程序问题,为什么结果总是不变(求二维数组的最大元素及其下标)
importjava.util.Scanner;
publicclassText4{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
Locationloc=newLocation();
System.out.println("输入二维数组的行数和列数:");
intr=input.nextInt();
intc=input.nextInt();
double[][]a=newdouble[r][c];
System.out.println("输入二维数组:");
for(inti=0;i<a.length;i++){
for(intj=0;j<a[i].length;j++){
a[i][j]=input.nextDouble();
}
}
loc.locateLargetst(a);
System.out.print("最大元素及其下标是:"+loc.maxValue+"在("+loc.row+","+loc.column+")");
}
}
classLocation{
publicintrow;
publicintcolumn;
publicdoublemaxValue;
Location(){
}
Location(intr,intc,doublem){
row=r;
column=c;
maxValue=m;
}
publicvoidlocateLargetst(double[][]a){//不需要static,如果用了不能直接使用属性row和column及maxValue
maxValue=a[0][0];//变量在class中声明不要再声明,再声明就成了局部变量
//introw=0; //变量在class中声明不要再声明,再声明就成了局部变量
//intcolumn=0; //变量在class中声明不要再声明,再声明就成了局部变量
for(inti=0;i<a.length;i++){
for(intj=0;j<a[i].length;j++){
if(maxValue<a[i][j]){
row=i;
column=j;
maxValue=a[i][j];
}
}
}
//returnnewLocation(row,column,maxValue);//本方法不需要返回任何信息
}
}
⑶ 如何用java 返回二维数组的两个下标
publicclassErWerArray{
publicstaticvoidmain(String[]args){
String[][]arr={{"a","b"},{"1","2","3"}};
StringindexOf=getXiaBiao(arr);
}
publicstaticStringgetXiaBiao(String[][]arr){
Stringstr="";
for(inti=0;i<arr.length;i++){
for(intj=0;j<arr[i].length;j++){
str+=arr[i]+","+arr[j];
}
}
returnstr;
}
}
⑷ java 二维数组的下标索引可不可以用变量表示啊
当然可以,不然难道用常量!
⑸ Java返回二维数组的两个下标
publicclassErWerArray{
publicstaticvoidmain(String[]args){
String[][]arr={{"a","b"},{"1","2","3"}};
StringindexOf=getXiaBiao(arr);
}
publicstaticStringgetXiaBiao(String[][]arr){
Stringstr="";
for(inti=0;i<arr.length;i++){
for(intj=0;j<arr[i].length;j++){
str+=arr[i]+","+arr[j];
}
}
returnstr;
}
}
⑹ java中 二维数组一维存下标,一维都赋初值为一 怎么弄
没明白你说的什么意思。
解释下一维数组和二维数组。
一位数组,你可以理解为一行数(这个数可以是数字、字符、字符串,由你定义的数组类型而定),如int[] a = new int[3];
a={1,2,3];
这个数组就是一维数组,a[0]=1,a[1]=2,a[2]=3.
要注意的是,new a[x],开辟了x个空间,而我们用的时候,下标从0开始,直到x-1。
二维数组:
int[][] a = new int[3][3],这就相当于一个3x3矩阵,3行3列。
给它赋值,a={{1,2,3},{4,5,6},{7,8,9}}
那么a[0][0]=1,a[0][1]=2,…
a[1][0]=4,a[1][1]=5,…
a[2][0]=7,a[2][1]=8,a[2][2]=9.
这时第a[m][n],m是行,n是列,注意他们是下标,从0到总行数-1,0到总列数-1.
初学者总是在下标这里纠结,搞不清下标和个数的分别,总是出现下标越界的错误。
一定要明白,我们有n个值,那么我们的下标是0,1,2,……,n-1
⑺ java二维数组下标0就越界
e[i] = s.toCharArray(); //如果s是空串,将导致e[i]指向空数组,进而导致e[i][0]越界。
自己单步调试看一下s和e[i]的值变化。
⑻ java 找到二维数组指定元素的位置
Scanner sn=new Scanner(new File(path)).useDelimiter("\r\n"); 这行代码的意思应该是指定分割符为“/r/n”吧,这个/r/n不一定是换行,用这个分割的数组元素全了空值,换个成这样吧
Scanner sn=new Scanner(new File(path)).useDelimiter([\\s]");
这样表示用空字符分割
还有find方法里的这行代码
if (ss[i][j].equals(str))
因ss[i][j]的值可能是空的,直接调用equals的话可能报空指针异常
所以equals前加个if 判断一下,如果是空就不用equals了
这是我改的代码
package com.jhc.cglib.test;
import java.util.*;
import java.io.*;
public class ReaderFile {
public static void main(String[] args) {
ReaderFile rf = new ReaderFile();
String ss[][] = rf.getArray("C:/Users/Administrator/Desktop/111.txt");// 文件路径
System.out.println(find(ss, "价位"));
}
public static int find(String[][] ss, String str) {
if(ss==null||ss.length==0)
return -1;
boolean flag = false;
for (int i = 0; i < ss.length; i++) {
for (int j = 0; j < ss[i].length; j++) {
if(ss[i][j]==null)
continue;
if (ss[i][j].equals(str)) {
flag = true;
System.out.print(i + 1 + "\t");
System.out.println(j + 1);
}
}
}
if (flag == false) {
return -1;
}
return -1;
}
public String[][] getArray(String path) {
String[][] x = new String[15][15];
try {
Scanner sn = new Scanner(new File(path)).useDelimiter("[\\s]");
int i = 0;
while (sn.hasNextLine()) {
String[] ss = sn.next().split(" ");
System.out.println(Arrays.toString(ss));
for (int j = 0; j < ss.length; j++) {
x[i][j] = ss[j];
}
++i;
}
} catch (Exception e) {
e.printStackTrace();
}
return x;
}
}
⑼ Java编程创建一个二维数组,随机产生0-100之间的值,求出最大值及对应下标
publicstaticvoidmain(String[]args){
intarr[][]=newint[3][3];
for(int[]is:arr){
for(inti=0;i<is.length;i++){
is[i]=(int)(Math.random()*100);
}
}
intmax=arr[0][0];
intm=0;
intn=0;
for(intis=0;is<arr.length;is++){
for(inti=0;i<arr[is].length;i++){
System.out.println("a["+is+"]"+"["+i+"]="+arr[is][i]);
if(arr[is][i]>=max){
max=arr[is][i];
m=is;
n=i;
}
}
}
System.out.println("最大值为:"+max);
System.out.println("下标为:"+m+","+n);
}
⑽ Java编程,创建一个二维数组,随机产生 0∼100之间的值,求出最大值及对应下标
需求:Java编程,创建一个二维数组,随机产生 0~100之间的值,求出最大值及对应下标。
分析步骤:
A:创建一个二维数组
int[][] twoArr = new int[8][8];
B: 随机产生0~100之间的值
Random random=new Random();
random.nextInt(100);
C:将随机产生的值赋值给数组元素
运用for循环
D:求出最大值
假设twoArr[0][0]为最大值,遍历数组,两两比较,把值大的赋值给max。同时标记x,y
E:输出最大值,输出x,y(遍历的两个局部变量)值
importjava.util.Random;
classTwoArr{
publicstaticvoidmain(String[]args){
intn=8;//这里也可以改成键盘录入的形式
int[][]twoArr=newint[n][n];//定义二维数组
//将随机产生的值赋值给数组元素
for(intx=0;x<twoArr.length;x++){
for(inty=0;y<twoArr[x].length;y++){
Randomrandom=newRandom();
twoArr[x][y]=random.nextInt(100);
}
}
//求最大值和索引
intmax=twoArr[0][0];
intindex1=0;
intindex2=0;
for(intx=1;x<twoArr.length;x++){
for(inty=0;y<twoArr[x].length;y++){
if(twoArr[x][y]>max){
max=twoArr[x][y];
index1=x;
index2=y;
}
}
}
//输出
System.out.println("最大值是:"+max+",其下标为:["+index1+"]"+"["+index2+"]");
}
}