编译Java程序时遇到的问题以及我的解决方法。

文章讲述了在Windows环境下编译运行Java程序时遇到的乱码问题及解决方案。包括两种方法:一是将文件编码改为ANSI,二是使用`javac-encodingutf8`命令指定编码。同时提到了类名与文件名需一致的原则,并指出一个计算器程序的代码示例中存在错误。
摘要由CSDN通过智能技术生成

1.在Windows窗口编译运行Java程序时,出现编译正常,运行乱码。

示例:

 public class javalover{
    public static void main(String[] args) {
        System.out.println("我喜欢学习java"); 
    }
}

我们将以上代码,在Windows窗口进行编译和运行:出现了下面这种情况:发现编译正常,运行出来是乱码。

这种情况下:我的解决方法是

  1. 第一种:重新保存文件,重新保存时将encoding(红色划线处)改为ANSI,再次在windows窗口运行;

  1. 此时编译运行结果正常,如图所示:

第二种方法就是在编译时,输入:Javac -encoding utf8 javalover.java

也就是在原来编译的代码字符基础上,在javac和Java文件名之间输入-encoding utf8

如图:我们一样可以运行成功。

如果保存时选择的是其他格式,只需要将utf8改为相应的格式就可以。

如保存为unicode格式:我们改utf8为unicode即可。

如出现:类javalover是公共的, 应在名为 javalover.java 的文件中声明。

这种情况一般是类名和保存的文件名不一致,只需要将文件名改为类名即可。

现有Java程序:

package com.sxt;
import java.util.Scanner;
public class jisuanqi{
    public static void main(String[] args) {
        boolean ture;
        System.out.println("欢迎使用计算器!");
        while(ture){
                if(new jisuanqi().input_output()){
                }else{
                        System.out.println("谢谢使用计算器OVER");
                        break;
            }
    }
}
int count_data(int data1,int data2,String sign){
        int data = 0;
        if(sign.equals("+")){
            data = data1 + data2;
            }else if(sign.equals("-")){
                data = data1 - data2;
            }else if(sign.equals("*")){
                data = data1 * data2;
            }else if(sign.equals("/")){
                data = data1 / data2;
            }else{
                data = -999999999;
            }
            return data;
    }
    boolean input_output;
    {
        System.out.print("请输入第一个整数:");
        Scanner scanner = new Scanner(System.in);
        String I= scanner.nextLine();
        int data1 =Integer.valueOf(I);
        System.out.print("请输入运算符号:");
        String sign = scanner.nextLine();
        System.out.print("请输入第二个整数:");
        int data2 = Integer.valueOf(scanner.nextLine());
        int data = new jisuanqi().count_data(data1,data2,sign);
        if(data ==-999999999){
            System.out.println("计算结果错误!");
        }else{
            System.out.println("计算结果是:"+data);
        }
        System.out.println("是否继续Y/N");
        String contu = scanner.nextLine();
        if("Y".equals(contu) ||"y".equals(contu)){
            return ture;
            }else{
                return false;
            }
    }
}

以上第八行

if(new jisuanqi().input_output()){显示有误以及

第49行retuen turn;

第51行return false;显示有误。

暂时,我还不知道是什么原因。希望道友指点一二。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值