Java 返回并显示多个参数

Java 返回并显示多个参数,java,android,Java,Android,我是java新手,我想知道如何返回和显示多个值 这是我的密码 MainActivity.java private void updatePressureValue(BluetoothGattCharacteristic characteristic) { if (mPressureCals == null) return; double pressure = SensorTagData.extractBarometer(characteristic, mPr

我是java新手,我想知道如何返回和显示多个值

这是我的密码

MainActivity.java

private void updatePressureValue(BluetoothGattCharacteristic characteristic) {

    if (mPressureCals == null) 
        return;
     double pressure = SensorTagData.extractBarometer(characteristic, mPressureCals);
     double temp = SensorTagData.extractBarTemperature(characteristic, mPressureCals);

    mTemperature.setText(String.format("%.1f\u00B0C", temp));
    mPressure.setText(String.format("%.2f", pressure));
}

private void updateAccelerometerValue(BluetoothGattCharacteristic characteristic ){

    double accelerometerx = SensorTagData.extractAccelerometer(characteristic, mAccelerometerx);
    double accelerometery = SensorTagData.extractAccelerometer(characteristic, mAccelerometery);
    double accelerometerz = SensorTagData.extractAccelerometer(characteristic, mAccelerometerz);

    mAccelerometerx.setText(String.format("%.4f", accelerometerx));
    mAccelerometery.setText(String.format("%.4f", accelerometery));
    mAccelerometerz.setText(String.format("%.4f", accelerometerz));
}
}
public class SensorData {

public static double extractHumAmbientTemperature(BluetoothGattCharacteristic c) {
    int rawT = shortSignedAtOffset(c, 0);

    return -46.85 + 175.72/65536 *(double)rawT;
}

public static double extractAccelerometer(BluetoothGattCharacteristic c) {

    Integer x = c.getIntValue(FORMAT_SINT8, 0);
    Integer y = c.getIntValue(FORMAT_SINT8, 1);
    Integer z = c.getIntValue(FORMAT_SINT8, 2) * -1;

    double scaledX = x / 64.0;
    double scaledY = y / 64.0;
    double scaledZ = z / 64.0;

    return scaledX; scaledY; scaledZ ;
}
SensorData.java

private void updatePressureValue(BluetoothGattCharacteristic characteristic) {

    if (mPressureCals == null) 
        return;
     double pressure = SensorTagData.extractBarometer(characteristic, mPressureCals);
     double temp = SensorTagData.extractBarTemperature(characteristic, mPressureCals);

    mTemperature.setText(String.format("%.1f\u00B0C", temp));
    mPressure.setText(String.format("%.2f", pressure));
}

private void updateAccelerometerValue(BluetoothGattCharacteristic characteristic ){

    double accelerometerx = SensorTagData.extractAccelerometer(characteristic, mAccelerometerx);
    double accelerometery = SensorTagData.extractAccelerometer(characteristic, mAccelerometery);
    double accelerometerz = SensorTagData.extractAccelerometer(characteristic, mAccelerometerz);

    mAccelerometerx.setText(String.format("%.4f", accelerometerx));
    mAccelerometery.setText(String.format("%.4f", accelerometery));
    mAccelerometerz.setText(String.format("%.4f", accelerometerz));
}
}
public class SensorData {

public static double extractHumAmbientTemperature(BluetoothGattCharacteristic c) {
    int rawT = shortSignedAtOffset(c, 0);

    return -46.85 + 175.72/65536 *(double)rawT;
}

public static double extractAccelerometer(BluetoothGattCharacteristic c) {

    Integer x = c.getIntValue(FORMAT_SINT8, 0);
    Integer y = c.getIntValue(FORMAT_SINT8, 1);
    Integer z = c.getIntValue(FORMAT_SINT8, 2) * -1;

    double scaledX = x / 64.0;
    double scaledY = y / 64.0;
    double scaledZ = z / 64.0;

    return scaledX; scaledY; scaledZ ;
}
我从互联网上获取代码,只显示传感器的值,我想添加加速计,但如何添加。有人能帮我吗


谢谢。

创建一个要返回的类:

public class myScaleData {
    public double scaledX,scaledY,scaledZ;
}

创建要返回的类:

public class myScaleData {
    public double scaledX,scaledY,scaledZ;
}

Java中没有一个元组表面上允许您轻松地实现这一点。再加上这一点,函数参数没有传递参考


在Java中,通常的方法是创建一个包含与返回值相关字段的类,并返回该类的实例。这是一种经过深思熟虑的语言设计选择:返回类实例往往会产生良好的可维护代码。

Java中没有任何元组表面上允许您轻松地完成这项工作。再加上这一点,函数参数没有传递参考


在Java中,通常的方法是创建一个包含与返回值相关字段的类,并返回该类的实例。这是一种经过深思熟虑的语言设计选择:返回类实例往往会产生良好的可维护代码。

使用所需的参数创建一个对象:


使用所需参数创建对象:

试试看,这比每次返回多个值时创建一个类要简单得多,例如:

public static Triplet<Double,Double,Double> extractAccelerometer(BluetoothGattCharacteristic c) {
    ...
    return new Triplet<Double,Double,Double>(scaledX,scaledY,scaledZ);
}
公共静态三重态提取器加速计(蓝牙GATTCharacteristic c){
...
返回新的三元组(scaledX、scaledY、scaledZ);
}

试试看,这比每次返回多个值时创建一个类要简单得多,例如:

public static Triplet<Double,Double,Double> extractAccelerometer(BluetoothGattCharacteristic c) {
    ...
    return new Triplet<Double,Double,Double>(scaledX,scaledY,scaledZ);
}
公共静态三重态提取器加速计(蓝牙GATTCharacteristic c){
...
返回新的三元组(scaledX、scaledY、scaledZ);
}

您只需返回一个数组

public static double[] extractAccelerometer(BluetoothGattCharacteristic c) {

    Integer x = c.getIntValue(FORMAT_SINT8, 0);
    Integer y = c.getIntValue(FORMAT_SINT8, 1);
    Integer z = c.getIntValue(FORMAT_SINT8, 2) * -1;

    double scaledX = x / 64.0;
    double scaledY = y / 64.0;
    double scaledZ = z / 64.0;

    return new double[] {scaledX, scaledY, scaledZ};
}   

您只需返回一个数组

public static double[] extractAccelerometer(BluetoothGattCharacteristic c) {

    Integer x = c.getIntValue(FORMAT_SINT8, 0);
    Integer y = c.getIntValue(FORMAT_SINT8, 1);
    Integer z = c.getIntValue(FORMAT_SINT8, 2) * -1;

    double scaledX = x / 64.0;
    double scaledY = y / 64.0;
    double scaledZ = z / 64.0;

    return new double[] {scaledX, scaledY, scaledZ};
}   

列一张双打的单子,然后把它退回

    public class SensorData {

    public static double extractHumAmbientTemperature(BluetoothGattCharacteristic c) {
     int rawT = shortSignedAtOffset(c, 0);

     return -46.85 + 175.72/65536 *(double)rawT;
    }

   public static List<Double> extractAccelerometer(BluetoothGattCharacteristic c) {

       Integer x = c.getIntValue(FORMAT_SINT8, 0);
       Integer y = c.getIntValue(FORMAT_SINT8, 1);
       Integer z = c.getIntValue(FORMAT_SINT8, 2) * -1;

       double scaledX = x / 64.0;
       double scaledY = y / 64.0;
       double scaledZ = z / 64.0;
       List<Double> list=new ArrayList<Double>();
       list.add(scaledX);
       list.add(scaledY);
       list.add(scaledZ);
       return list ;
     }
公共类传感器数据{
公共静态双萃取环境温度(蓝牙GATT特征c){
int-rawT=shortSignedAtofset(c,0);
回报率-46.85+175.72/65536*(双倍)rawT;
}
公共静态列表(BluetoothGattCharacteristic c){
整数x=c.getIntValue(格式为8,0);
整数y=c.getIntValue(格式为8,1);
整数z=c.getIntValue(格式为8,2)*-1;
双刻度x=x/64.0;
双刻度y=y/64.0;
双刻度z=z/64.0;
列表=新的ArrayList();
list.add(scaledX);
list.add(scaledY);
list.add(scaledZ);
退货清单;
}

列出双打并返回

    public class SensorData {

    public static double extractHumAmbientTemperature(BluetoothGattCharacteristic c) {
     int rawT = shortSignedAtOffset(c, 0);

     return -46.85 + 175.72/65536 *(double)rawT;
    }

   public static List<Double> extractAccelerometer(BluetoothGattCharacteristic c) {

       Integer x = c.getIntValue(FORMAT_SINT8, 0);
       Integer y = c.getIntValue(FORMAT_SINT8, 1);
       Integer z = c.getIntValue(FORMAT_SINT8, 2) * -1;

       double scaledX = x / 64.0;
       double scaledY = y / 64.0;
       double scaledZ = z / 64.0;
       List<Double> list=new ArrayList<Double>();
       list.add(scaledX);
       list.add(scaledY);
       list.add(scaledZ);
       return list ;
     }
公共类传感器数据{
公共静态双萃取环境温度(蓝牙GATT特征c){
int-rawT=shortSignedAtofset(c,0);
回报率-46.85+175.72/65536*(双倍)rawT;
}
公共静态列表(BluetoothGattCharacteristic c){
整数x=c.getIntValue(格式为8,0);
整数y=c.getIntValue(格式为8,1);
整数z=c.getIntValue(格式为8,2)*-1;
双刻度x=x/64.0;
双刻度y=y/64.0;
双刻度z=z/64.0;
列表=新的ArrayList();
list.add(scaledX);
list.add(scaledY);
list.add(scaledZ);
退货清单;
}

只需创建一个包含所需内容的类并返回即可。说真的,首先点击谷歌搜索“返回多个java值”你自己试过解决问题吗?你可以扩展对象来做你想做的事情,或者,如果它在你想传递的数值中更通用,只考虑一个int数组。事实上,这就是Android对传感器数据所做的:只做一个包含你想要的并返回它的类。“返回一个以上的值java”解释。你是否甚至试图解决你自己的问题?你可以扩展对象做你想要的,或者,如果它在你想传递的值中更通用,只考虑一个int数组。事实上,这就是Android对传感器数据所做的: