我有一个OpenFileDialog,我只想允许.txt用户使用有效文件。
我知道我可以添加Filter到OpenFileDialog像这样:
var dialog = new OpenFileDialog();
dialog.DefaultExt = ".txt";
dialog.Filter = "Text Files (*.txt)|*.txt";
var result = dialog.ShowDialog();
// Do something with the result
Run Code Online (Sandbox Code Playgroud)
但是问题是,我仍然可以直接在中说一些类似"test.jpg"的内容OpenFileDialog,然后打开它,然后上传此.jpg文件。(显然,稍后某个地方出了问题,但这暂时不重要。)我只想知道如何限制用户仅添加“ .txt”文件,没有别的吗?(通过直接在中进行验证OpenFileDialog,而不是稍后再进行验证。)
我创建了自己的MyArrayList,但无法对其进行排序.一个普通的Arraylist可以分类,Collections.sort但我的不能.有人可以告诉我哪里错了吗?
import java.util.*;
public class TestMyArrayList
{
public static void main(String[] args){
String[] subjects = {"EIE320", "EIE558", "EIE375", "EIE424"};
Integer[] marks = {90,85,70,80};
MyArrayList<String> sList = new MyArrayList<String>(subjects);
Collections.sort(sList);
sList.print();
MyArrayList<Integer> mList = new MyArrayList<Integer>(marks);
Collections.sort(mList);
mList.print();
}
}
public class MyArrayList<E> extends ArrayList<E>
implements List<E>
{
private List<E> data;
public MyArrayList()
{
}
public MyArrayList(E[] inputdata){
super();
data = new ArrayList<E>();
for(E e:inputdata){
data.add(e);
}
}
public void print(){
for(Iterator iter = data.iterator();iter.hasNext();){
System.out.print(iter.next() + " "); …Run Code Online (Sandbox Code Playgroud) 为什么 == 不适用于 Java 中的字节数组?
例如:
byte[] a = new byte[]{1,2,3,4};
byte[] b = new byte[]{1,2,3,4};
a == b //false
a.equals(b) //false
Arrays.equals(a,b) //true
Run Code Online (Sandbox Code Playgroud) 我现在很无聊,正在做一些Java练习测试,因为我已经用Java编程了很长时间.在一个问题之后,我现在想知道以下几点之间的区别:
String[] test1 = { "A", "B", "C" };
String[] test2 = new String[]{ "A", "B", "C" };
String test3[] = { "A", "B", "C" };
String test4[] = new String[]{ "A", "B", "C" };
Run Code Online (Sandbox Code Playgroud)
当我在Java IDE中输入它时,我没有收到任何错误.我还没有尝试编译它们中的任何一个(虽然我过去主要使用test2自己,所以我知道一个有效).
test1性能更好,test2因为你没有进行新的String[]实例化,或者无论如何都在幕后完成?)test1与以下内容相同test3:为什么在Java中存在test3和test4存在,如果它test1和test2?相同?是否有任何情况下在[]字段名称后面使用优先于类型后面?)只想知道好奇心.我猜每天都会学到新东西.
private Methods:我知道如何:
private Fields:我知道如何:
private Fields:我知道如何:
private Constructors:我知道如何:
(可用于在单模式中创建私有构造函数的新实例,同时保持实例字段为空)
我不知道的和我想知道的:
我应该在代码中更改什么以及如何更改?
TestMethodsClass 中的这部分:
if(Modifier.isStatic(field.getModifiers())){
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.STATIC);
}
Run Code Online (Sandbox Code Playgroud)
或者我在单元测试类中进行的调用:
// Getting private STATIC String myString of the class MyClass and set it to a local variable
// public static call equivalent: String localString = myClassInstance.myString;
// public Getter …Run Code Online (Sandbox Code Playgroud) 我有一个表示有效UTF-8字符的int(->字节),并且我想在中打印该单个字符System.out.println。
我知道以下两种将表示UTF-8字节的int转换为单字符字符串的方法:
int myByte = ...; // For example 67
String sMyByte = String.valueOf((char)((byte)myByte & 0xFF)); // 67 will become "C"
String sMyByte = new String(new byte[]{ (byte)myByte }, StandardCharsets.UTF_8); // 67 will become "C"
Run Code Online (Sandbox Code Playgroud)
两者似乎有点长/不可读,我想知道是否存在一种更简便的方法来将表示UTF-8字节的int转换为单字符字符串。如果没有,我可能会使用上面两个中的第一个。
我有一个字符串FILENAME,实际上在foreach循环中保存文件名.字符串将是这样的:
MyFile_TEST_INDIA_20160728
MyFile_TEST_AMERICA_20160728
MyFile_TEST_GERMANY_20160728
Run Code Online (Sandbox Code Playgroud)
我需要获取国家/地区名称的前2个字符.我试过以下:
String rmtdir = Filename.substring(Filename.length() - 12, Filename.length() - 12);
System.out.println(rmtdir);
Run Code Online (Sandbox Code Playgroud)
但通过使用它,我只能获得INDIA所需的数据.
对于其他国家/地区,我手动需要更新子字符串的第二部分,并考虑到国家/地区的扩展长度.
像美国和德国一样:
String rmtdir = Filename.substring(Filename.length() - 12, Filename.length() - 14);
Run Code Online (Sandbox Code Playgroud)
有没有办法转到起始索引并选择要选择的职位数?
我有多个类(简化用于解释目的):
public class A : BaseClass,
IHandleEvent<Event1>,
IHandleEvent<Event2>
{
}
public class B : BaseClass,
IHandleEvent<Event3>,
IHandleEvent<Event4>
{
}
public class C : BaseClass,
IHandleEvent<Event2>,
IHandleEvent<Event3>
{
}
Run Code Online (Sandbox Code Playgroud)
在我的"BaseClass"中,我有一个方法,我想检查Child-class是否实现IHandleEvent了特定事件.
public void MyMethod()
{
...
var event = ...;
...
// If this class doesn't implement an IHandleEvent of the given event, return
...
}
Run Code Online (Sandbox Code Playgroud)
从这个SO答案我知道如何检查对象是否实现了通用接口(implements IHandleEvent<>),如下所示:
if (this.GetType().GetInterfaces().Any(x =>
x.IsGenericType && x.GenericTypeDefinition() == typeof(IHandleEvent<>)))
{
... // Some log-text
return;
}
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何检查对象是否实现了SPECIFIC通用接口(implements IHandleEvent<Event1>).那么,如何在if中检查?
我会比较一个字符,但它实际上不起作用:
//...
System.out.print("PROCEED? (Y/N):\t");
line = in.nextLine();
ch = line.charAt(0);
while (ch != 'y' || ch != 'n' || ch != 'Y' || ch != 'N'){
System.out.print("NON-VALID INPUT. TYPE Y-N:\t");
line = in.nextLine();
ch = line.charAt(0);
}
//...
Run Code Online (Sandbox Code Playgroud)
在我的终端上,当我按y或时n,结果是:
PROCEED? (Y/N): y
NON-VALID INPUT. TYPE Y-N: y
NON-VALID INPUT. TYPE Y-N: Y
NON-VALID INPUT. TYPE Y-N: n
NON-VALID INPUT. TYPE Y-N: r
NON-VALID INPUT. TYPE Y-N: d
...
Run Code Online (Sandbox Code Playgroud) 我是java的新手.我的代码有些问题.当我开始写setter和getter时,我遇到了问题.这两个错误是:
参数getName的非法修饰符; 只有决赛是允许的
和
Void方法不能返回值
这是我的代码:
public class Profile {
private String name;
private String dayOfBirth;
private String townOfResidence;
private String counrtyOfResidence;
private String nationality;
private String listOfInterests;
private Profile listOfFriends;
public Profile(String name, String dateOfBirth, String townOfResidence, String
counrtyOfResidence, String nationality, String listOfInterests,
Profile listOfFriends){
this.name = name;
this.dayOfBirth = dateOfBirth;
this.townOfResidence = townOfResidence;
this.counrtyOfResidence = counrtyOfResidence;
this.nationality = nationality;
this.listOfInterests = listOfInterests;
this.listOfFriends = listOfFriends;
public String getName(){
return name;
}
public String getDateOfBirth(){
return dateOfBirth;
}
public …Run Code Online (Sandbox Code Playgroud) 我在java中进行了关于继承的练习:
public class Gran {
private int x;
public Gran() {
this.x = 68;
}
public int age() {
this.x = this.x+1; return this.x;
}
@Override
public String toString() {
return "Gran " + age();
}
}
public class Dad extends Gran {
private int x;
public Dad(){
this.x = 41;
}
@Override
public String toString() {
return "Dad " + age();
}
}
public class Sis extends Dad {
private int x;
public Sis() {
this.x = 17;
} …Run Code Online (Sandbox Code Playgroud) 我使用随机数,我正在生成0到7之间的随机数.但是有一个问题:随机数有时会重复前一个数字.
我按下按钮生成一个随机数; 所以当点击按钮我有时真的得到一个不同的随机数,但有时它开始重复数字.举个例子:
单击按钮,有时数字在0-7范围内重复,如:
1-3-4-3-6-3-5-5
正如你所看到的,3重复多次,5也有两次出现.
因此,有两种不同类型的重复.我写了下面的代码,它应该杀死第二次重复(重复5次):
int randomNumber;
do {
randomNumber = random.nextInt(7 - 0 + 1) + 0;
} while (randomNumber == lastRandomNumber);
lastRandomNumber = randomNumber;
Log.d("RandomNumber","= "+randomNumber);
return randomNumber;
Run Code Online (Sandbox Code Playgroud)
现在我想要的是:
它跟踪最后一个随机数,但现在我想跟踪所有先前生成的随机数.但是我该怎么做呢?实现这一目标的最佳方式是什么?请指导我或分享一些代码.
java ×10
arrays ×3
c# ×2
string ×2
.net ×1
android ×1
byte ×1
casting ×1
char ×1
character ×1
collections ×1
comparison ×1
field ×1
file ×1
generics ×1
inheritance ×1
interface ×1
list ×1
object ×1
private ×1
reflection ×1
sorting ×1
static ×1
substring ×1
talend ×1
types ×1
while-loop ×1
wpf ×1