开关案例始终运行默认代码。我读了一些关于“新线”问题的文章,但我认为这里不是这样。因为我将第一个char从“StringClient”字符串复制到char变量中。但是当我在eclpise中用我的ATMServer类运行它时,它工作得很好。只有当我从cmd执行它们时,这个问题才会出现。有人知道是怎么回事吗?请帮帮忙。多谢了。
import java.io.*;
import java.net.*;
public class ATMClient {
private static final int PORT = 20000;
private static final char DRAW_STR = 'Α';
private static final char DEPOSIT_STR = 'Κ';
private static final char BALANCE_STR = 'Υ';
private static final char EXIT_STR = 'Ε';
private static boolean hasEnded = false;
public static void main(String args[]) throws IOException {
Socket dataSocket = new Socket("localhost",PORT);
InputStream is = dataSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
OutputStream os = dataSocket.getOutputStream();
PrintWriter out = new PrintWriter(os, true);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String stringclient;
while(!hasEnded){
printMenu();
stringclient = input.readLine();
char optionCode = stringclient.charAt(0);
String tempData;
int amount;
switch(optionCode){
case EXIT_STR:
out.println(String.valueOf(EXIT_STR));
hasEnded = true;
continue;
case DRAW_STR:
tempData = stringclient.substring(1);
try{
amount = Integer.parseInt(tempData);
}catch(NumberFormatException e){
System.out.println("Το ποσό πρέπει να είναι αριθμός. Δοκιμάστε ξανά.");
System.out.println();
continue;
}
if(amount > 420){
System.out.println("Μπορείτε να κάνετε ανάληψη έως 420 ευρώ.");
System.out.println();
continue;
}
out.println(String.valueOf(DRAW_STR) + amount);
break;
case DEPOSIT_STR:
tempData = stringclient.substring(1);
try{
amount = Integer.parseInt(tempData);
}catch(NumberFormatException e){
System.out.println("Το ποσό πρέπει να είναι αριθμός. Δοκιμάστε ξανά.");
System.out.println();
continue;
}
out.println(String.valueOf(DEPOSIT_STR) + amount);
break;
case BALANCE_STR:
out.println(String.valueOf(BALANCE_STR));
break;
default:
System.out.println("Λάθος επιλογή. Δοκιμάστε ξανά.");
System.out.println();
continue;
}
String reply = in.readLine();
System.out.println(reply);
}
out.close();
os.close();
in.close();
is.close();
input.close();
dataSocket.close();
}
}
我想和源文件的字符编码有关。尝试使用“javac-encoding”进行编译。此外,我认为当您从Eclipse运行时,当您运行应用程序并输入值时,它会处理字符编码,与cmd一样,当您输入值时,它会使用默认的系统编码,这就是为什么会出现这种不一致性;不过只是猜测。
我正在尝试在Spring中使用MessageSource注入文本消息。我编写的程序编译良好,但它总是打印出默认消息,而不是从. Properties文件中获取正确的值。我一点线索也没有。 下面是尝试注入文本的Circle类: 下面是bean配置文件的一部分: 我存储问候语和画图。圈入消息。属性文件,并编写了一个主类。但输出总是: 有人知道我的情况可能会出什么问题吗? 更新感谢您的建议。我正在调试,
问题内容: 我想在命令行上输入-T3来节省时间,因为我希望我能做的所有Maven构建都可以运行多线程。 Maven 3.3.9我用谷歌搜索,但没有发现任何有希望的东西,只是建议为命令行选择添加一个环境变量,并将其附加到命令行上的每个maven调用中。 这样,每次仍然需要手动步骤(输入环境变量的名称)来进行并行构建。 我想在mvn settings.xml文件中进行全局配置。 问题答案: 你不能配置
好吧,这是一个两部分的问题,我试图最好地解释我的疑问: 代码很简单,用户不断输入成绩,程序会对其进行计数,一旦用户给出EOF条目,程序会在最后显示每个成绩的最终计数。 1) 当我运行代码时,程序会正确地跟踪我输入的每个等级的计数,但总是落在默认情况下,即使输入是正确的!为什么会这样? 2) 因此,我不完全确定“cin.get()”是如何工作的,但如果我是对的,它会接受用户输入的任何内容的第一个字符
问题内容: 在我的应用程序中,我对一些本机代码进行了包装,这是通过JNI桥调用的。此本地代码需要在单独的线程中执行(并行处理)。但是,问题在于代码有时“挂起”,因此线程需要“强制”终止。不幸的是,我还没有找到任何“微妙的”方法来这样做:一般建议是告诉线程中的代码正常退出,但是我无法使用此本地代码(以上均为第三方代码)来执行此操作。 我使用Java Concurrent API进行任务提交: 只会中
我有一台Windows 10 x64机器。我打开了JDK 10。我的指向打开JDK 10位置。我的变量有