小编Mar*_*oun的帖子

乘法奇怪的输出

long thirtyDayInMillis = 30 * 24 * 60 * 60 * 1000;
Run Code Online (Sandbox Code Playgroud)

它应该返回,2592000000但它返回-1702967296.

但是,如果我将声明分成两个陈述.

long dayInMillis = 24 * 60 * 60 * 1000;
long thirtyDayInMillis = 30 * dayInMillis;
Run Code Online (Sandbox Code Playgroud)

它返回正确的值.

为什么它返回-170296729630 * 24 * 60 * 60 * 1000

java

1
推荐指数
1
解决办法
152
查看次数

左移操作

  1. 当我执行j <<= 1while时j最初为零时,它最终为零,而不是通常应该为1.任何其他初始值通常加倍.

    有谁知道为什么会这样?

  2. 为什么切片字段上的按位操作会导致运行时错误?

bit-manipulation bit-shift go

1
推荐指数
1
解决办法
243
查看次数

为什么我不能替换":)"

我似乎无法将":)"的字符串替换为其他内容,这是我的代码:

if(message.contains(":)")) message = message.replaceAll(":)", replacement);
Run Code Online (Sandbox Code Playgroud)

这是错误:

Exception in thread "Listen" java.util.regex.PatternSyntaxException: Unmatched closing ')'
near index 0
:)
^
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

java regex string

1
推荐指数
1
解决办法
154
查看次数

分部在飞

我正在尝试用Java创建一个小程序,将华氏温度转换为摄氏温度.它涉及扣除32并乘以5/9.所以我这样做了.

double Fahrenheit = 100;
double celsius = (Fahrenheit - 32) * (5/9);
System.out.println(celsius);
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,5/9返回零,甚至毁掉了它

double s = 5/9;
Run Code Online (Sandbox Code Playgroud)

返回零,我不知道为什么.我发现我能做到的唯一方法是,如果我宣布一切,并逐步进行.

double x = 5, p = 9, n = (x/p), Fah = 100;
double Cel = Fah - 32;
Cel = Cel*n;
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么会发生这种事情,我认为至少将它声明为双重会返回一个值.如果有人知道,可以绕过它.

java division

1
推荐指数
1
解决办法
61
查看次数

更改文件名,而不重写它

我正在尝试编写一个只更改文件名而不用读取和写入不同名称的代码,是否有内置函数?我试图寻找

如果没有,最好的方法是用新名称重写它?

java file

1
推荐指数
1
解决办法
315
查看次数

哪些字符串是空的?

在JDK文档中,它声明String方法isEmpty()对于任何长度为0 的字符串都是true.

对于空字符串来说,这显然是正确的"".

是否还有其他字符串?我测试过换行符和回车符,它们有一个长度.我还没有测试带有附加退格的字符.


编辑:我很欣赏以下所有好答案中的所有其他信息,但我已经接受了我认为最直接的答案.

java string special-characters is-empty

1
推荐指数
2
解决办法
163
查看次数

定义二维数组

这个定义有什么问题?我想用这些数字声明一个二维数组:

int[][] arr = [[1,2,3],[1,2,3],[1,2,3]];
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Type mismatch: cannot convert from int to int[]
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
122
查看次数

如何使字符串比较不区分大小写?

我正在尝试根据您的答案为其中一个程序编写代码.我想这样做,以便一些变量不区分大小写.例如,如果我的变量x等于"Me"我希望它也相等"me".那可能吗?

到目前为止,这是我的代码:

import java.util.Scanner;

class Tutorial {
    public static void main (String args[]){
        System.out.println("Who goes there?");
        Scanner N = new Scanner(System.in);
        String name = N.next();
        if (name.equals("me") || name.equals("Me")){
                System.out.println("Well, good for you smartass.");
                System.exit(1);
        }else System.out.printf("Nice to meet you, %s.%n", name);   
        System.out.print("How are you doing?");
        Scanner d1 = new Scanner(System.in);
        String doing = d1.next();
        switch(doing){
        case "good": System.out.println("that is nice to hear.");
        case "Well": System.out.println("that is nice to hear.");
        case "bad" : System.out.println("That's …
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
2129
查看次数

舍入一个双重并分组?

我会尽力解释这个.

假设我得到了一个用户输入,那就是:245,我希望将其向下舍入为200然后除以100然后最终为+1,因此结果为3(将其放在区域3中,更多在下面)

基本上我需要的是一个分区系统,如下所示

Zone 1: 0-99
Zone 2: 100-199
Zone 3: 200-299
Run Code Online (Sandbox Code Playgroud)

对于用户输入的任何数字等都是如此,所以我觉得将数字向下舍入然后除以100将是最好的方法,因为我目前用if else语句将其除去,虽然显然是有限的,但只适用于我的预定区域.

java

1
推荐指数
1
解决办法
60
查看次数

数组参考说明

对于代码

int []arr = new int[4];
System.out.println(arr);
Run Code Online (Sandbox Code Playgroud)

输出看起来像

[I @ 54640b25

编译器究竟打印出来的是什么?arr的内存地址?与C不同,Java似乎没有将数组名称(单独)等同于数组的第一个位置.

java arrays

1
推荐指数
1
解决办法
70
查看次数