- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在写论文,需要帮助。我的论文的一部分是我需要创建一个游戏选择器,我的连接类型是蓝牙,客户端是Android手机,服务器是java。我使用 JFileChooser 来获取数组的值,我需要将该数组传递给另一个类。我尝试关注这篇文章http://www.dreaminco...ifferent-class/但在我的程序中,我似乎无法让它工作,这是我的代码:
DemoJFileChooser(我将获取路径[]数组的类)
package com.luugiathuy.apps.remotebluetooth;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DemoJFileChooser extends JPanel implements ActionListener {
JButton go;
JFileChooser chooser;
String choosertitle;
public int x=0;
public String path[] = new String[10];
public DemoJFileChooser() {
go = new JButton("Do it");
go.addActionListener(this);
add(go);
}
public Dimension getPreferredSize(){
return new Dimension(200, 200);
}
public static void main(String s[]) {
Thread waitThread = new Thread(new WaitThread());
waitThread.start();
JFrame frame = new JFrame("");
DemoJFileChooser panel = new DemoJFileChooser();
frame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
frame.getContentPane().add(panel,"Center");
frame.setSize(panel.getPreferredSize());
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int result;
chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle(choosertitle);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//
// disable the "All files" option.
//
chooser.setAcceptAllFileFilterUsed(false);
//
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
System.out.println("getCurrentDirectory(): "
+ chooser.getCurrentDirectory());
System.out.println("getSelectedFile() : "
+ chooser.getSelectedFile());
File paths = chooser.getSelectedFile();
path[x] = paths.getAbsoluteFile().toString();
x++;
for (int y=0;y<9;y++){
System.out.println(path[y]);
setArray(path);
}
}
else {
System.out.println("No Selection ");
}
}
void setArray(String paths[]) { // saves surname to variable
path= paths;
}
String[] getArray() { //gets the surname when called
return path;
}
}
ProcessConnectionThread(我需要数组的类)
package com.luugiathuy.apps.remotebluetooth;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.InputStream;
import java.io.OutputStream;
import com.luugiathuy.apps.remotebluetooth.DemoJFileChooser;
import javax.microedition.io.StreamConnection;
public class ProcessConnectionThread implements Runnable{
//DemoJFileChooser path;
//public String[] path = new String[10];
private StreamConnection mConnection;
// Constant that indicate command from devices
//private static final int EXIT_CMD = -1;
private static final int STEER_RIGHT = 1;
private static final int STEER_LEFT = 2;
private static final int ACCE = 3;
private static final int REV = 4;
private static final int MOVE = 5;
private static final int LEFT_CLICK = 6;
private static final int DOUBLE_CLICK = 7;
private static final int RIGHT_CLICK = 8;
private static final int HOLD = 9;
private static final int RELEASE = 10;
private static final int MOVEX = 11;
private static final int MOVEY = 12;
private static final int GAME = 20;
private static final int GAME1 = 11;
private static final int GAME2 = 12;
private static final int GAME3 = 13;
private static final int GAME4 = 14;
private static final int GAME5 = 15;
private DemoJFileChooser patharray[] = new DemoJFileChooser[10]; //create object array from student class
public ProcessConnectionThread(StreamConnection connection)
{
mConnection = connection;
}
public void FileChooser() { //constructor use keyword public just to make sure it is visible
for (int studI=0;studI<10;studI++) {
patharray[studI] = new DemoJFileChooser();
}
}
@Override
public void run() {
try {
// prepare to receive data
InputStream inputStream = mConnection.openInputStream();
OutputStream outputStream = mConnection.openOutputStream();
System.out.println("waiting for input");
while (true) {
int command = inputStream.read();
System.out.println(command);
processCommand(command);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Process the command from client
* @param command the command code
*/
private void processCommand(int command) {
try {
case GAME1:
for (int y=0;y<10;y++){
patharray[y].getArray();
System.out.println(patharray[y]);
}
Process p = Runtime.getRuntime().exec(patharray[0]);
p.waitFor();
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我在 for 循环、patharray[] 上遇到错误。
任何帮助/建议将不胜感激。谢谢。
最佳答案
创建数组深拷贝的最简单方法是使用内置 Arrays.copyOf
函数族。
例如:
String [] srcArray = { "item 1", "item 2", "item 3" };
String [] copy = Arrays.copyOf(srcArray, srcArray.length);
就您的代码而言,存在一些问题。在 DemoJFileChooser.actionPerformed
您始终通过 System.out.println
打印路径数组的所有 10 个元素,但不能保证所有这些元素中都存在一个对象。您可能会在这里收到 NullPointerException。您的 for 循环应限制为 x
。另外,在该循环中您正在调用 setArray(path)
这意味着您无缘无故地调用该函数 10 次。另外,你真的在做path = path
因为你正在通过path
进入setArray
它分配给路径。
您还应该检查 x
没有超过 path
的大小当您使用 path[x] = paths.getAbsoluteFile().toString();
分配给它时.
作为一个单独的建议,而不是做 for(int i=0; i<10; i++) {...}
每当您迭代数组时,您可能希望使用 for(int i=0; i<theArray.length; i++) {...}
这样,如果您更改了数组大小,则无需更新整个程序中的 for 循环。
关于java - 从另一个类获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472165/
我正在尝试创建一个包含 int[][] 项的数组 即 int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
我有一个整数数组: private int array[]; 如果我还有一个名为 add 的方法,那么以下有什么区别: public void add(int value) { array[va
当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。 JavaScript [1, 2] + [3, 4] = "
根据我正在阅读的教程,如果您想创建一个包含 5 列和 3 行的表格来表示这样的数据... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...它说你可以使用下
我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。 在 python 中,当我创建一个数组并使用 for x in y 时,我得
我有一个这样的数组: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // 我想使用 toStr
rent_property (table name) id fullName propertyName 1 A House Name1 2 B
这个问题在这里已经有了答案: 关闭13年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] array[index] 和
使用 Excel 2013。经过多年的寻找和适应,我的第一篇文章。 我正在尝试将当前 App 用户(即“John Smith”)与他的电子邮件地址“jsmith@work.com”进行匹配。 使用两个
当仅在一个边距上操作时,apply 似乎不会重新组装 3D 数组。考虑: arr 1),但对我来说仍然很奇怪,如果一个函数返回一个具有尺寸的对象,那么它们基本上会被忽略。 最佳答案 这是一个不太理
我有一个包含 GPS 坐标的 MySQL 数据库。这是我检索坐标的部分 PHP 代码; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
我需要找到一种方法来执行这个操作,我有一个形状数组 [批量大小, 150, 1] 代表 batch_size 整数序列,每个序列有 150 个元素长,但在每个序列中都有很多添加的零,以使所有序列具有相
我必须通过 url 中的 json 获取文本。 层次结构如下: 对象>数组>对象>数组>对象。 我想用这段代码获取文本。但是我收到错误 :org.json.JSONException: No valu
enter code here- (void)viewDidLoad { NSMutableArray *imageViewArray= [[NSMutableArray alloc] init];
知道如何对二维字符串数组执行修剪操作,例如使用 Java 流 API 进行 3x3 并将其收集回相同维度的 3x3 数组? 重点是避免使用显式的 for 循环。 当前的解决方案只是简单地执行一个 fo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有来自 ASP.NET Web 服务的以下 XML 输出: 1710 1711 1712 1713
如果我有一个对象todo作为您状态的一部分,并且该对象包含数组列表,则列表内部有对象,在这些对象内部还有另一个数组listItems。如何更新数组 listItems 中 id 为“poi098”的对
我想将最大长度为 8 的 bool 数组打包成一个字节,通过网络发送它,然后将其解压回 bool 数组。已经在这里尝试了一些解决方案,但没有用。我正在使用单声道。 我制作了 BitArray,然后尝试
我们的数据库中有这个字段指示一周中的每一天的真/假标志,如下所示:'1111110' 我需要将此值转换为 boolean 数组。 为此,我编写了以下代码: char[] freqs = weekday
我是一名优秀的程序员,十分优秀!