Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组与字符串乘法_Java_Arrays - Fatal编程技术网

Java 数组与字符串乘法

Java 数组与字符串乘法,java,arrays,Java,Arrays,我有一个来自tsv文件的2d数组。该数组称为root,具有以下信息: HG-sn-FA PC 2 16:0 PI 118:0 诗3 20:0 体育2 24:0 26:0 16:1 18:2 然后我有一些字符串: String lc = 34:2 // It is a user input so it could be another number String result = 2 // again a user input so it could be 1,2 or 3 34:2是一个

我有一个来自tsv文件的2d数组。该数组称为
root
,具有以下信息:

HG-sn-FA
PC 2 16:0
PI 118:0
诗3 20:0
体育2 24:0
26:0
16:1
18:2
然后我有一些字符串:

 String lc = 34:2 // It is a user input so it could be another number
 String result = 2 // again a user input so it could be 1,2 or 3
34:2是一个数字,不是一个应该被划分的数字

我需要从数组的
根[I][2]
中的FA行获取值,这些值加起来可以是字符串lc的值。字符串结果告诉我应该加多少个值,如果是1、2或3

例如:

String lc = 34:2
String result = 2
这意味着我需要在数组中从FA行中找到两个值,它们的总和等于34:2,这可能是16:1+18:1


我需要打印数组中的两个值。

不能将字符串和int相乘。必须先将字符串转换为int或double

//String to double
double doubleVal = Double.parseDouble(stringVal);
//String to int 
int intVal = Integer.parseInt(stringVal);
然后你可以做任何数学运算

//multiplication exemple
double result = doubleVal * 1234;
然后,如果需要,可以将其转换回字符串

//double to String
String s = ""+result;
编辑好的32:2表示32.2,所以这里是解决方案

    double x = 2.0; //you have your x doublevalue
    String y = "32:2"; //you have your y String value

    String nums = y.replace(":",".");
    double ydouble = Double.parseDouble(nums); // equal 32.2

    double res = ydouble / x; //32.2/2 = 16.1

    for (int i = 0; i < root.lenght; i++) {


        //same thing here, we convert the FA number to a double
        String nums = root[i][2].replace(":",".");
        double rdouble  = Double.parseDouble(nums);


        if(res == rdouble)
            return root[i][2]; //solution found

    }
    return null;
double x=2.0//你有你的x值
字符串y=“32:2”//你有你的y字符串值
字符串nums=y.replace(“:”,“);
double ydouble=double.parseDouble(nums);//等于32.2
双分辨率=Y倍/x//32.2/2 = 16.1
对于(int i=0;i

希望它有帮助

恕我冒犯,但在Java和其他类似的高级语言中使用数组很少(如果有的话)是个好主意。您需要同时考虑OO和使用集合…@Powerslave为什么这通常是个坏主意?数组是处理向量的正确方法。哪种数据结构取决于数据以及访问数据的方式。因此,2D数组中是否充满了字符串?我发现很难理解您想要实现的目标-一个字符串如何包含多个字符串?你的
x
y
的例子对我来说没有意义。@Duncan,我的2d数组来自tsv文件。我想用数组乘以一个字符串,这样就可以得到FA的组合。请看我的编辑,希望有帮助。@Matteo有一个
Vector
类可用(或者
ArrayList
,例如,如果您想避免同步开销)。还有其他的收藏。数组是刚性的,在许多情况下,它们也会降低代码的可读性。使用它们通常表明系统的设计不合适。数组曾经被认为是处理向量的好主意——在旧的低级语言(如C)时代。同时,考虑实现诸如向量之类的低级结构也表明在设计阶段出现了问题。是的,我正在转换字符串。但是我该怎么做呢?
double result=doubleVal*root[i][2]
您想做什么还不清楚。根[i][2]并不总是一个数字。你说的FA是什么意思?如果我按照你的解释:根[0][0]=“PC”,根[0][1]=“2”和根[0][2]=“16:0”?根[0][0]=“HG”,根[0][1]=“SN”和根[0][2]=“FA”根[1][0]=PC,我希望你现在能跟上。我需要计算FA的组合来得到一个值。如果字符串y=32:2,那么应该计算16:1*2等于字符串y。好的,再次检查我的答案,我编辑了它。这有帮助吗?刚刚看到你的编辑,首先你误解了我或者我不是很清楚。32:2不应该被除,它是一个数字。我刚刚用一些代码编辑了我的原始帖子。也许你能帮我?