Java 返回并显示多个参数
我是java新手,我想知道如何返回和显示多个值 这是我的密码 MainActivity.javaJava 返回并显示多个参数,java,android,Java,Android,我是java新手,我想知道如何返回和显示多个值 这是我的密码 MainActivity.java private void updatePressureValue(BluetoothGattCharacteristic characteristic) { if (mPressureCals == null) return; double pressure = SensorTagData.extractBarometer(characteristic, mPr
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对传感器数据所做的: