用case输出一个数组中的数据
时间: 2024-05-26 09:10:12 浏览: 9
可以这样写:
int arr[] = {10, 20, 30, 40, 50};
int size = sizeof(arr) / sizeof(arr[0]);
for(int i=0; i<size; i++) {
switch(i) {
case 0:
cout << "第" << i+1 << "个数是:" << arr[i] << endl;
break;
case 1:
cout << "第" << i+1 << "个数是:" << arr[i] << endl;
break;
case 2:
cout << "第" << i+1 << "个数是:" << arr[i] << endl;
break;
case 3:
cout << "第" << i+1 << "个数是:" << arr[i] << endl;
break;
case 4:
cout << "第" << i+1 << "个数是:" << arr[i] << endl;
break;
default:
break;
}
}
这段代码可以输出数组arr中的数据。
相关问题
使用写一个读取xlsb格式,并输出数据的工具类
以下是一个可以读取XLSB文件并输出数据的Java工具类,使用了Apache POI库:
```java
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class XLSBReader {
private File file;
private Workbook workbook;
private Sheet sheet;
public XLSBReader(String filePath) throws IOException {
this.file = new File(filePath);
FileInputStream fileInputStream = new FileInputStream(file);
this.workbook = WorkbookFactory.create(fileInputStream);
this.sheet = workbook.getSheetAt(0);
}
public List<String[]> read() {
List<String[]> data = new ArrayList<>();
for (Row row : sheet) {
String[] rowData = new String[row.getLastCellNum()];
for (Cell cell : row) {
int cellIndex = cell.getColumnIndex();
switch (cell.getCellType()) {
case BOOLEAN:
rowData[cellIndex] = String.valueOf(cell.getBooleanCellValue());
break;
case NUMERIC:
rowData[cellIndex] = String.valueOf(cell.getNumericCellValue());
break;
case STRING:
rowData[cellIndex] = cell.getStringCellValue();
break;
case BLANK:
rowData[cellIndex] = "";
break;
default:
rowData[cellIndex] = "";
break;
}
}
data.add(rowData);
}
return data;
}
public void close() throws IOException {
this.workbook.close();
}
}
```
这个工具类的构造函数需要传入要读取的XLSB文件的路径,read方法将返回一个List,其中每个元素都是一个String数组,表示一行数据。close方法用于关闭Workbook对象和相关资源。
以下是一个使用这个工具类读取XLSB文件并输出数据的示例:
```java
public class Demo {
public static void main(String[] args) {
try {
XLSBReader reader = new XLSBReader("example.xlsb");
List<String[]> data = reader.read();
for (String[] row : data) {
for (String cell : row) {
System.out.print(cell + "\t");
}
System.out.println();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,我们创建了一个XLSBReader对象,并将要读取的XLSB文件的路径传递给它。然后,我们使用read方法读取XLSB文件中的数据,并将其存储在data变量中。最后,我们遍历data变量,并将其输出到控制台。注意,这里使用了一个嵌套循环,以便逐行逐列输出数据。
上述代码如何输出6个数据的所有点
在上述代码中,Kmeans函数的返回值labels是一个Mat矩阵,它表示每个数据点属于哪个簇。如果要输出6个簇的所有数据点,可以按照以下步骤进行:
1. 首先将labels矩阵转换为一维数组,方便后续处理:
```
int[] labelsArray = labels.ToArray<int>();
```
2. 定义6个List变量,分别表示6个簇的数据点:
```
List<float> cluster0 = new List<float>();
List<float> cluster1 = new List<float>();
List<float> cluster2 = new List<float>();
List<float> cluster3 = new List<float>();
List<float> cluster4 = new List<float>();
List<float> cluster5 = new List<float>();
```
3. 遍历labelsArray,将每个数据点添加到对应的簇中:
```
for (int i = 0; i < labelsArray.Length; i++)
{
float[] data = mat.Get<float>(i, 0);
switch (labelsArray[i])
{
case 0:
cluster0.AddRange(data);
break;
case 1:
cluster1.AddRange(data);
break;
case 2:
cluster2.AddRange(data);
break;
case 3:
cluster3.AddRange(data);
break;
case 4:
cluster4.AddRange(data);
break;
case 5:
cluster5.AddRange(data);
break;
default:
break;
}
}
```
4. 输出每个簇的所有数据点:
```
Console.WriteLine("Cluster 0:");
foreach (float f in cluster0)
{
Console.Write(f + " ");
}
Console.WriteLine();
Console.WriteLine("Cluster 1:");
foreach (float f in cluster1)
{
Console.Write(f + " ");
}
Console.WriteLine();
// 依次输出其他簇的数据点
```
这样就可以输出6个簇的所有数据点了。注意,上述代码仅适用于每个数据点只有一个特征的情况,如果每个数据点有多个特征,需要对数据点进行拆分和重组。