小编Hel*_*lgi的帖子

为什么hasNextLine()永远不会结束?

对不起,如果听起来太简单了.我是Java的新手.

这是我用来检查的一些简单代码hasNextLine().当我运行它时,我无法阻止它.我想如果你没有写任何输入并按下Enter,你就会逃脱while循环.

有人可以向我解释hasNextLine()在这种情况下如何运作?

import java.util.*;

public class StringRaw {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
        }
        System.out.print("YOU'VE GOT THROUGH");
    }
}
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

13
推荐指数
3
解决办法
2万
查看次数

当我输入double时,nextDouble()抛出一个InputMismatchException

import java.util.*;

class Averager
{
    public static double unlimited()
    {
        int count = 0;
        double sum = 0;
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext())
        {
            double d = scan.nextDouble();
            sum += d;
            count++;
        }
        double ave = sum/count;
        return ave;
    }

    public static void main(String[] args) {
        System.out.println(unlimited()+"\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用整数时没有错误,但如果我使用带有点的数字则会出现错误.

$ javac Averager.java; java Averager
0.5
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextDouble(Scanner.java:2387)
    at Averager.unlimited(Averager.java:12)
    at Averager.main(Averager.java:21)
Run Code Online (Sandbox Code Playgroud)

据我所知,0.5应该用双倍覆盖.如果不是,请有人纠正我.

java java.util.scanner

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

有条件地选择序列化器

我有三个 Django 模型。

class Asset(models.Model):
  name = models.CharField(max_length=255)


class Place(Asset):
  location = PointField()


class Zone(Asset):
  location = PolygonField()
Run Code Online (Sandbox Code Playgroud)

我想对地点和区域使用相同的端点。是否可以为每个请求决定使用哪个序列化器,例如我可以轻松检查请求的资产是一个地方还是一个区域?

我只对处理单个实例感兴趣,因此不需要处理 ListView 等。

django django-rest-framework django-rest-framework-gis

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