首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将文件中的数字放入数组时出错(Java)

将文件中的数字放入数组时出错(Java)
EN

Stack Overflow用户
提问于 2018-02-28 22:09:56
回答 2查看 30关注 0票数 0

我想把下面的前15位数放入一个数组中。问题是它输入了直到"344“的所有数字。此数字仅显示为"34“。我假设这是因为计数将像"xxx“这样的无效输入算作数字。我不确定如何解决这个问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0
4
23
566
34
xxx
45
555
11
34
35
45
xxx
65

55
98
344
54

这是我的代码(三个部分,一个添加文件,一个玩游戏,一个打印结果):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class JumpIt {

    // Constants
    private int count = 0;
    private final int MAX_SIZE = 15;
    public int[] arr = new int[MAX_SIZE];

    public JumpIt(String theName) throws FileNotFoundException {
        @SuppressWarnings("resource")
        Scanner scanner = new Scanner(new File("file.txt"));
        int i=0;
        while(scanner.hasNext() && count < 15) {   //only need first 15 
            if (scanner.hasNextInt()) {
                arr[i++] = scanner.nextInt();
                count+= 1;
            }
            else {
                String s = scanner.nextLine();
                System.out.println(s);
            }
        }
    }

    int n = 0;
    public int play() throws BadInputException{             //gets size
        if(arr[0]!= 0) {
            throw new BadInputException(); 
        }
        return play(arr,0,count-1);
    }

    private static int play(int arr[],int first, int last) { 
        if(first > (last)) {
            return 0;
        }
        else if ((first + 1)>last){
            return arr[first];
        }
        else {
            if (arr[first] < arr[first + 1]) {
                return arr[first] + play(arr,first+2,last);
            }
            else {
                return arr[first+1] + play(arr,first+2,last);
            }
        }
    }

    public void printGame() {
        if(count > 10) {
            for(int i = 0; i < 10; i++) { 
                System.out.print(arr[i] + " ");
            }
            n = count - 10;
            for(int i = 0; i < n; i++) {
                System.out.print(arr[i] + " ");
            }
        }
        //if(count > 15) {
        //  System.out.println("The file has more than 15 integers");
        //  System.out.println("Only the first 15 integers are considered");
        //}
        else {
            n = count; 
            for(int i = 0; i < count;i++) {
                System.out.print(arr[i]);
            }
        }
        System.out.println("The file has "); 
        System.out.print(count);
        System.out.println(" " + "integers.");
        }
}

这是我的主要内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Driver {
public static void main(String[] args) throws FileNotFoundException {
    JumpIt game4 = new JumpIt("file.txt");
    game4.printGame();
    System.out.println("");
    System.out.println("play game");
    try {
            System.out.println("the cost is " + game4.play());
            System.out.println("");
    } catch (BadInputException e){
            System.out.println("bad input: the first int must be 0");
    }
EN

回答 2

Stack Overflow用户

发布于 2018-02-28 22:46:55

您的代码可以正常工作。使用小清理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[] arr = new int[15];
Scanner scanner = new Scanner(new File("file.txt"));
int i = 0;
while (scanner.hasNext() && i < 15) {
  if (scanner.hasNextInt()) {
    arr[i++] = scanner.nextInt();
  } else {
    scanner.nextLine();
  }
}

创建具有以下元素0、4、23、566、34、45、555、11、34、35、45、65、55、98、344的数组。

会不会是代码中的count变量在进入循环之前大于0?你没有在你的代码片段中初始化它。

票数 0
EN

Stack Overflow用户

发布于 2018-02-28 23:46:13

您的问题表明您的程序没有正确地将前15个数字读入数组。事实上是这样的(我已经通过测试进行了验证)。

您认为数组没有正确填充的原因是因为您在数组的打印输出的末尾看到了数字34。最后一个数字是344,但是这个逻辑导致了欺骗(打印前10,然后从数组的开头开始):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void printGame() {
    if(count > 10) {
        for(int i = 0; i < 10; i++) { 
            System.out.print(arr[i] + " ");
        }
        n = count - 10;   // Here you are restarting back at index=0
        for(int i = 0; i < n; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    ....

出现数字34是因为它是第五个元素(即15-10)。不幸的是,34与344相似。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49039443

复制
相关文章
js传递数组到后台
方法一:  1.使用JSON.stringify 将数组对象转化成json字符串;
超级小可爱
2023/02/20
3.9K0
如何将多个参数传递给 React 中的 onChange?
在 React 中,一些 HTML 元素,比如 input 和 textarea,具有 onChange 事件。onChange 事件是一个非常有用、非常常见的事件,用于捕获输入框中的文本变化。有时候,我们需要将多个参数同时传递给 onChange 事件处理函数,在本文中,我们将介绍如何实现这一目标。
网络技术联盟站
2023/06/07
2.7K0
将数组中多个对象的同名属性值取出合并成新数组
业务中需求的方法,接口返回一个数组,里面包含了大量的对象,具有同名的属性名,比较常见。但是需要将其中参数为name的属性值全部取出,合并成数组。
子舒
2023/08/23
4570
数字证书系列--将证书绑定到多个URL以及IP
在我们个人搭建网站的时候,很可能开始的时候还没有注册DNS, 这时候就可能需要把 证书绑定到对应的IP地址上,从而实现验证,下面简述如何实现证书绑定到IP地址上:
qsjs
2020/06/09
3.2K0
将多个属性传递给 Vue 组件的几种方式
所有使用基于组件的体系结构(如Vue和React)的开发人员都知道,创建可重用组件是很困难的,而且大多数情况下,最终会通过传入大量的属性,以便从外部更容易地控制和自定义组件。这并不坏,但是传递大量属性确实会变得有点麻烦和丑陋。
前端小智@大迁世界
2020/05/11
1.9K0
VUE 如何将父组件中的数据传递到子组件中
因为异步调用的问题,如果我不采取手段,子页面没有办法获得父页面中的数据,页面将会显示为 没有数据。
HoneyMoose
2022/09/14
6.7K0
VUE 如何将父组件中的数据传递到子组件中
利用fluorineFx将DataTable从.Net传递到Flash
FluorineFx自带的示例都不错,就是有点不简洁,下面的代码基本上已经最简版了(环境vs2010) 1、先创建一个Web Application,然后添加FluorineFx以及FluorineFx.ServiceBrowser的引用 这二个程序集的默认位置在: C:\Program Files (x86)\FluorineFx\Bin\net\3.5\FluorineFx.dll C:\Program Files (x86)\FluorineFx\Bin\net\3.5\FluorineFx.Serv
菩提树下的杨过
2018/01/23
2.4K0
利用fluorineFx将DataTable从.Net传递到Flash
[剑指offer] 数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
尾尾部落
2018/09/04
2.1K0
数组中重复的数字
在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
MickyInvQ
2021/10/22
2.3K0
【Go 语言社区】Go语言传递数组到函数
如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数在以下两种方式之一,以下两种声明方法产生类似的结果,因为每个告诉编译器,一个整数数组将会被接收。类似的方式,可以通过多维数组形式参数。 方式-1 如下形式参数的大小的数组: void myFunction(param [10]int) { . . . } 方式-2 如下形式参数作为可变数组大小: void myFunction(param []int) { . . . } 例子 现在,考虑下面的函数,这将需要一个数组作为以及另一个参数,并
李海彬
2018/03/20
9340
[Python3 开发技巧]·如何打乱字典中多个对应数组
当我们把数个对应数组保存到字典中,在我们读取的时候这些数据会按照我们保存的顺序读取出来。如果我们需要打乱顺序,但不改变对应数组的关系时,例如原先位置0对应的各个数组的第一位,我们可以称之为第一行。当我们打乱过后,第一行不一定还在第一行了,因为打乱顺序了,但是那一行不会改变。
小宋是呢
2019/06/27
1.9K0
js中数组求和_多个数组对应项求和
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
2.7K0
Linux 中复制文件到多个目录中
在学习 Linux 的过程中,对于新手而言总是会使用几个命令来完成一个简单的任务。对正在熟悉使用终端的人这是很容易理解的行为。然而,如果你想要成为一个老手,学习一些“快捷命令”会显著减少时间浪费。
小小工匠
2021/08/16
5.4K0
javascript定义数组,将数组中数组内容求和_数组求和JAVA
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
2.9K0
多维数组的传递
接收多维数组的函数,可以省略相当于开头下标的n维的元素个数。但是,(n - 1)维之下的元素个数必须是常量。 以下是接收一维、二维、三维数组的参数的声明示例: void func1(int v[], int n); //元素类型为int、元素个数随意(n)。 void func2(int v[][3], int n); //元素类型为int[3]、元素个数随意(n)。 void func3(int v[][2][3], int n); //元素类型为int[2][3]、元素个数随
Zoctopus
2018/06/04
2.1K0
数组中的重复数字
"""描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:0\le n \le 10000 \0≤n≤10000进阶:时间复杂度O(n)\O(n) ,空间复杂度O(n)\O(n)示例1输入:[2,3,1,0,2,5,3]复制返回值:2复制说明:2或3都是对的数据范围
用户9955628
2022/08/22
1.4K0
针对多个系统服务的攻击尝试
枚举用户,结果返回 550 则表示用户不存在,结果返回 250,251,252 表示用户是有效的:
信安之路
2021/04/14
5390
查找数组中重复的数字
        题目来源于《剑指Offer》中的面试题3:找出数组中重复的数字。   // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},   // 那么对应的输出是重复的数字2或者3。         解决方法有多种,包括数组排序,哈希表法,以及作者推荐的重排数组法。此处介绍自己的一个做法,以空间换
waylon
2018/03/08
4K0
指针在数组中的数据传递作用
#include <stdio.h> int change(int * b) { int i; for(i=0;i<5;i++){ b[i] = 18; } return 0; } int func(const int * a) { int i; for(i=0;i<5;i++){ // printf("%d\n",a[i]); //这里的a[i]就相当于*(a+i),这只是人们的一种习惯写法 //所以以此类推能够取到所有的值 printf("%d\n",*(a+i
用户5166556
2019/04/16
1.1K0
php将多个值的数组去除重复元素 转
(adsbygoogle = window.adsbygoogle || []).push({});
双面人
2019/04/10
5.1K0
php将多个值的数组去除重复元素
                                                                            转

相似问题

使用for循环将数字传递到数组中

14

尝试将多个ID传递到API查询中

10

将多个params数组传递到方法中

10

将多个对象传递到数组中

25

尝试将多个参数从php传递到javascript

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文