将数组中的值分配给一个String - Java

时间:2017-09-09 20:12:14

标签: java arrays

我对编程很新,并且无法弄清楚如何将数组的值打印到一个连续的字符串。

if(tempScale.equalsIgnoreCase("F"))
    {

    for( int index = 0; index < temperature.length; index++)
    {
       temp = temperature[index];
        tempSum += temperature[index] ++; //sum used for average calc
        tempLabel = "F";

        String temps = "";   
        temps += temps + Double.toString(temp) + " "; //this is what I would like to have printed

    }       
}

我只想检查并查看这些值是否实际上正确打印到一个字符串,但如果字符串不在循环内,那么我得到消息&#34;找不到符号 - 变量临时&#34; 。任何人都可以帮我弄清楚我做错了什么吗?我最终需要将字符串放在循环之外,因为我将在稍后对其进行格式化,如下所示。

System.out.print(temps);

5 个答案:

答案 0 :(得分:0)

temps字符串的声明移到if语句之外。您还应该使用equals而不是plus equals,否则项目将在字符串中多次列出。

这是一个简单的例子:

String s = "";
if (condition) {
    for (int i = 0; i < 5; i++) {
        s = s + Integer.toString(i) + " ";
    }
}
System.out.println(s);

答案 1 :(得分:0)

你需要将temps放在for循环之外,如果你不这样做,每次都会将temps重置为&#34;&#34;。试试这个:

public static void printArray(double[] a) {

    String s="";

    for(int i=0;i<a.length;i++) {
        s+=Double.toString(a[i]);
    }

    System.out.println(s);

}

public static void main(String...args) {

    double[] myArray=new double[/*length*/];
    //some code to initialize array...
    printArrray(myArray);

}

答案 2 :(得分:0)

假设您使用的是Java 8,并假设您拥有一系列双打;然后,您可以使用DoubleStream来获取平均值并执行String连接。像,

double[] temperature = { 32, 100 };
String tempScale = "F";
if (tempScale.equalsIgnoreCase("F")) {
    String temps = DoubleStream.of(temperature).mapToObj(Double::toString)
            .collect(Collectors.joining(" "));
    double average = DoubleStream.of(temperature).average().orElse(0);
    System.out.printf("%s average = %.1f%n", temps, average);
}

输出

32.0 100.0 average = 66.0

答案 3 :(得分:0)

真的很快,这就是我要做的事情:

double temp = 0;
double tempSum = 0;
double tempAverage = 0;
String tempLabel = "";
String temps = ""; 

if(tempScale.equalsIgnoreCase("F")){
    tempLabel = "F";
    for( int index = 0; index < temperature.length; index++) {
        temp = temperature[index];
        tempSum += temp; //sum used for average calc
        temps += String.valueOf(temp) + tempLabel + " "; //this is what I would like to have printed
    }
    tempAverage = tempSum / (double) temperature.length;
}

在你的情况下,你肯定不知道在 for 循环中声明 temps 字符串变量的内容,因为其中包含的任何字符串都将被清除并重新初始化来自当前迭代的字符串数据。

答案 4 :(得分:0)

public class TempScale {

public static void main(String[] asdasd) {

    String tempScale = "F";
    String temps = "";

    double[] temperature = { 1.0, 1.1, 1.2, 1.3 };
    double tempSum = 0.0;
    double temp = 0.0;
    String tempLabel = "";// or null if you prefer

    if (tempScale.equalsIgnoreCase("F")) {

        for (int index = 0; index < temperature.length; index++) {
            temp = temperature[index]; // this is just temperature[index]
            tempSum += temperature[index]++; // sum used for average calc
            tempLabel = "F";

            temps += temps + Double.toString(temp) + " "; // this is what I
                                                            // would like to
                                                            // have printed

        }
    }

    System.out.println("temps " + temps);
    System.out.println("tempSum " + tempSum);
    System.out.println("tempLabel " + tempLabel);
}
}

变量的范围是问题。你需要在if代码块之前的if代码块之后声明temps,temSum,tempLabel和其他任何你需要的东西。

正如其他人所说:在循环中声明变量将使用每个循环迭代的相应值初始化它。

问候