当我通过URL的InputStream读取xml,然后删除除url之外的所有内容时,我得到" http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu% 20Bin%20Bataye.mp3 ".
如你所见,有很多"%20".
我希望网址不被转义.
有没有办法在Java中这样做,而不使用第三方库?
我试过这个:
public void removeSelectedFromTable(JTable from)
{
int[] rows = from.getSelectedRows();
TableModel tm= from.getModel();
while(rows.length>0)
{
((DefaultTableModel)tm).removeRow(from.convertRowIndexToModel(rows[0]));
rows = from.getSelectedRows();
}
from.clearSelection();
}
Run Code Online (Sandbox Code Playgroud)
但是,它有时会留下一个.可能是什么问题?
我希望能够通过可执行JAR进行分发,而无需让用户升级到最新版本的JRE.如何将JRE打包到JAR中,以便它们可以在系统上没有安装JRE的情况下运行jar?
当我从url.openStream()中捕获异常时,我不想告诉互联网不可用的困难方式.
有一种简单的方法可以判断计算机是否通过Java连接到Internet?在这种情况下,"连接到互联网"意味着能够从特定网址下载数据.
如果我尝试从它下载但它不可用,那么该程序会挂起一点.我不想那么挂.因此,我需要一种快速的方式来查询网站是否可用.
我正在使用JLayer播放来自互联网的mp3数据输入流.如何更改输出的音量?
我正在使用此代码来播放它:
URL u = new URL(s);
URLConnection conn = u.openConnection();
conn.setConnectTimeout(Searcher.timeoutms);
conn.setReadTimeout(Searcher.timeoutms);
bitstream = new Bitstream(conn.getInputStream()/*new FileInputStream(quick_file)*/);
System.out.println(bitstream);
decoder = new Decoder();
decoder.setEqualizer(equalizer);
audio = FactoryRegistry.systemRegistry().createAudioDevice();
audio.open(decoder);
for(int i = quick_positions[0]; i > 0; i--){
Header h = bitstream.readFrame();
if (h == null){
return;
}
bitstream.closeFrame();
Run Code Online (Sandbox Code Playgroud) 我有一个Track对象的ArrayList.每个Track对象都有以下字段(所有字符串):
网址,标题,创作者,专辑,流派,作曲家
我想在JTable中显示这些轨道,每行是Track对象的一个实例,每列包含一个Track对象的属性.
如何使用JTable显示此数据?我已经使用了一个正确实现getValueAt()方法的AbstractTableModel.不过,我在屏幕上看不到任何东西.
或者只是使用数组更容易?
如果我知道MP3文件的URL,获取其长度,比特率,大小等的最简单/最快的方法是什么?
如何才能下载MP3的ID3标签部分以获取这些详细信息?
我想要一个线程每500毫秒在后台执行一次.为此,我扩展了一个Thread,实现了ActionListener并将我扩展的类放入Timer中.Timer每500毫秒调用run().但是,当这个线程从Internet下载东西时,我的整个Swing GUI都会冻结.我希望它在后台运行,而不会在等待IO完成时冻结GUI.在我们等待500毫秒之前,我也是下载器完成下载.
调用gogogo()来初始化整个过程:
public final class Downloader extends Thread implements ActionListener
{
public static void gogogo()
{
t= new Downloader();
new Timer(500, (ActionListener) t).start();
}
public void run()
{
doStuff(); //the code that i want repeatedly called
}
public void actionPerformed(ActionEvent e)
{
run();
}
}
Run Code Online (Sandbox Code Playgroud) 对于我正在制作的游戏,太阳系有x和y坐标,我想使用坐标随机生成该太阳系的特征.最简单的方法是使用两个种子x和y坐标为随机数生成器播种.无论如何从两粒种子中获得一粒可靠的种子,还是有一种好的PRNG需要两粒种子才能长时间生长?
编辑:我知道这两个数字之间的二进制运算,但我试图找到导致最少数量冲突的方法?加法和乘法很容易导致碰撞.但是XOR怎么样?
假设我们有两个长,x和y.什么运营商或涉及x和y会产生另一个长,Z,这是最有可能等于应用相同的运算符或函数X和Y的不同的结果函数?
例如:增加将是一个糟糕的选择.1 + 4 = 5,但2 + 3也等于5.
编辑:让我解释为什么我问这个问题.我正在制作一个太空RPG游戏.游戏的环境(solarsystems)将从两个种子程序生成.这些种子由宇宙中系统的x和y坐标组成.所以玩家在冒险过程中很可能会遇到(500,501)和(501,500)系统.我需要一种方法来使这些太阳系产生独特.但是,我想确保尽可能多的坐标对会产生独特的种子.
编辑2:我测试了给我的两个解决方案.Accipitridae的答案远远优于Artelius的答案.以下是测试解决方案的代码:
HashSet<Long> set = new HashSet<Long>();
for(int x=0; x<1000; x++)
for(int y=0; y<1000; y++)
//I commented out one of the solutions at a time
set.add((long)(((x&0x7FFFFFFF) << 33) | ((y&0x7FFFFFFF) << 2) | ((x>>>62) & 2) | (y>>>63)));//Artelius
set.add((long)(x - y * 7046029254386353131l));//Accipitridae
System.out.println(set.size());
Run Code Online (Sandbox Code Playgroud)
从HashSet的大小,我可以知道通过每种方法生成了多少独特的种子.对于这些参数,Artelius的解决方案产生了2048个独特的长度,而Accipitridae产生了1000000个,这意味着根本没有碰撞.
谢谢大家努力解决这个问题.:)
java ×6
jtable ×2
mp3 ×2
audio ×1
jlayer ×1
math ×1
properties ×1
random ×1
url ×1
url-encoding ×1