当前位置: 首页 > 知识库问答 >
问题:

Java交换机始终运行默认代码

丁阳炎
2023-03-14

开关案例始终运行默认代码。我读了一些关于“新线”问题的文章,但我认为这里不是这样。因为我将第一个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();
    }
}

共有1个答案

欧旻
2023-03-14

我想和源文件的字符编码有关。尝试使用“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位置。我的变量有