- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,这是一个学校项目,我似乎无法弄清楚我做错了什么,我意识到有更好的方法可以做很多事情,但必须以这种方式完成(我会注意到具体是什么)。
我需要编写两个非常简单的程序。
第一个程序创建一个包含 300 个 1 到 54 范围内的随机整数的文件,然后打印到文本文件中。
第二个程序读取该文本文件并将内容放入数组中。然后操作该数组以输出一些内容:数字的平均值以及数字在特定范围内出现的次数。我还尝试立即输出整个数组。不幸的是,所有部分基本上都不起作用,或者我不理解某些事情,但我很确定这都是哈哈。
方案1如下
import java.util.*;
import java.io.*;
public class OutStream{
public static void main(String[] args){
int Counter = 0,
Value;
Random Gen = new Random();
System.out.println("Generating Numbers and Text File Now");
try{
File out = new File("F:\\Text.txt");
PrintWriter P = new PrintWriter(out);
while(Counter <= 300){
Value = Gen.nextInt(54)+1;
P.println(Value);
++Counter;
System.out.println("Value: " + Value);
}
P.close();
}catch(Exception E){
E.printStackTrace();
System.out.println(E.getMessage());
}
System.out.println("The Program has ended");
}
}
第二个程序是一切崩溃的地方。
import java.util.*;
import java.io.*;
public class InStream {
public static void main(String[] args) {
int [] NumArray = new int[301];
int PosNum = 0,
Total = 0,
Average = 0,
Range1 = 0,
Range2 = 0,
Range3 = 0,
Range4 = 0,
Range5 = 0,
Range6 = 0;
try{
File Fout = new File("F:\\Text.txt");
PosNum = 0;
Scanner Fin = new Scanner(Fout);
while(Fin.hasNextInt()){
NumArray[++PosNum] = Fin.nextInt();
}
Fin.close();
}catch(Exception E){
E.printStackTrace();
System.out.println("***ERROR ***** " + E.getMessage());
}
for(NumArray[PosNum] = 0; NumArray[PosNum] <= 301;){
Total += NumArray[PosNum++];
if(NumArray[Range1] >= 1 && NumArray[Range1] <= 10){
Range1++;
}
if (NumArray[Range2] >= 11 && NumArray[Range2] <= 20){
Range2++;
}
if(NumArray[Range3] >= 21 && NumArray[Range3] <= 30){
Range3++;
}
if(NumArray[Range4] >= 31 && NumArray[Range4] <= 40){
Range4++;
}
if(NumArray[Range5] >= 41 && NumArray[Range5] <= 50){
Range5++;
}
if(NumArray[Range6] >= 51 && NumArray[Range6] <= 54){
Range6++;
}
}
Average = Total / 301;
System.out.println("The Average Is: " + Average);
System.out.println("1 Through 10 appear: " + Range1 + " Times");
System.out.println(" 11 Through 20 appear: " + Range2 + "Times");
System.out.println("21 Through 30 appear: " + Range3 + " Times");
System.out.println("31 Through 40 appear: " + Range4 + " Times");
System.out.println("41 Through 50 appear: " + Range5 + " Times");
System.out.println("51 Through 54 appear: " + Range6 + " Times");
}
}
这是我最新的尝试。
import java.util.*;
import java.io.*;
public class FixedInstream {
public static void main(String[] args) {
int [] MyArray = new int[301];
int PosNum = 0,
Average,
Total = 0,
R1 = 0,
R2 = 0,
R3 = 0,
R4 = 0,
R5 = 0,
R6 = 0,
R7 = 0;
try{
File Fout = new File("F:\\Text.txt");
PosNum = 0;
Scanner Fin = new Scanner(Fout);
while(Fin.hasNextInt()){
MyArray[PosNum] = Fin.nextInt();
Total += MyArray[PosNum];
}
Fin.close();
}catch(Exception E){
E.printStackTrace();
System.out.println("***ERROR ***** " + E.getMessage());
}
for(MyArray[PosNum] = 0; MyArray[PosNum] <= 300; ++MyArray[PosNum]){
if(MyArray[R1] >= 1 && MyArray[R1] <= 10){
R1++;
}
if (MyArray[R2] >= 11 && MyArray[R2] <= 20){
R2++;
}
if(MyArray[R3] >= 21 && MyArray[R3] <= 30){
R3++;
}
if(MyArray[R4] >= 31 && MyArray[R4] <= 40){
R4++;
}
if(MyArray[R5] >= 41 && MyArray[R5] <= 50){
R5++;
}
if(MyArray[R6] >= 51 && MyArray[R6] <= 54){
R6++;
}
}
Average = Total / 301;
System.out.println("The Average Is: " + Average);
System.out.println("1 Through 10 appear: " + R1 + " Times");
System.out.println("11 Through 20 appear: " + R2 + " Times");
System.out.println("21 Through 30 appear: " + R3 + " Times");
System.out.println("31 Through 40 appear: " + R4 + " Times");
System.out.println("41 Through 50 appear: " + R5 + " Times");
System.out.println("T51 Through 54 appear: " + R6 + " Times");
}
}
程序未正确输出下面的示例,我显然忘记在最初的评论中添加。
输出:
The Average Is: 27
The Numbers 1 Through 10 appear: 1 Times
The Numbers 11 Through 20 appear: 1 Times
The Numbers 21 Through 30 appear: 1 Times
The Numbers 31 Through 40 appear: 1 Times
The Numbers 41 Through 50 appear: 1 Times
The Numbers 51 Through 54 appear: 1 Times
文本文件 1 - 54 中有 300 个数字,这些数字重复的方式不同,但通常重复 10 - 50 次,正如您从上面的输出中看到的那样,它只显示一次,这让我相信我没有增加某些东西正确。
最佳答案
我认为这里有很多令人困惑的事情...下面是答案,但我建议您尝试自己调试此代码片段以了解问题所在。
您正在使用 301
迭代数组细胞。数组索引从0
开始至length-1
。当您使用 numArray[++posNum]
进行迭代时当 posNum 初始化为 0 时,第一个索引将为 ++0 = 1
。所以你永远不会到达数组的第一个单元格。这导致 out of range exception
因为最后一个索引将是 301
但实际上最后一个索引是 300
...只需阅读异常消息即可找到解决方案。
我建议您看看 for loop
的工作原理了解如何使用递增索引逐单元浏览数组。然后你将像这样纠正你的 for 循环:
for(int idx = 0; idx < NumArray.length; idx++)
您使用错误的变量访问当前单元格。这可以附加,但您会在 Debug模式下非常快地检测到它...
NumArray[idx]
而不是
NumArray[Range1]
这对于让你的程序正常工作并不是必需的,但是在 Java 中有一些约定(就像在每种语言中一样)和 variables
写在 camelCase
.
公共(public)类 InStream {
public static void main(String[] args) {
int [] NumArray = new int[301];
int PosNum = 0,
Total = 0,
Average = 0,
Range1 = 0,
Range2 = 0,
Range3 = 0,
Range4 = 0,
Range5 = 0,
Range6 = 0;
try{
File Fout = new File("F:\\Text.txt");
PosNum = 0;
Scanner Fin = new Scanner(Fout);
while(Fin.hasNextInt()){
NumArray[PosNum++] = Fin.nextInt();
}
Fin.close();
}catch(Exception E){
E.printStackTrace();
System.out.println("***ERROR ***** " + E.getMessage());
}
for(int idx = 0; idx < NumArray.length; idx++){
Total += NumArray[idx];
if(NumArray[idx] >= 1 && NumArray[idx] <= 10){
Range1++;
}
if (NumArray[idx] >= 11 && NumArray[idx] <= 20){
Range2++;
}
if(NumArray[idx] >= 21 && NumArray[idx] <= 30){
Range3++;
}
if(NumArray[idx] >= 31 && NumArray[idx] <= 40){
Range4++;
}
if(NumArray[idx] >= 41 && NumArray[idx] <= 50){
Range5++;
}
if(NumArray[idx] >= 51 && NumArray[idx] <= 54){
Range6++;
}
}
Average = Total / 301;
System.out.println("The Average Is: " + Average);
System.out.println(" 1 Through 10 appear: " + Range1 + " Times");
System.out.println("11 Through 20 appear: " + Range2 + " Times");
System.out.println("21 Through 30 appear: " + Range3 + " Times");
System.out.println("31 Through 40 appear: " + Range4 + " Times");
System.out.println("41 Through 50 appear: " + Range5 + " Times");
System.out.println("51 Through 54 appear: " + Range6 + " Times");
}
}
不要犹豫,调试你的程序,这是学习语言和享受 Java 的最佳方式
关于将文本文件的内容放入数组然后显示和操作数组内容的 Java 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33657890/
我正在努力做到这一点 在我的操作中从数据库获取对象列表(确定) 在 JSP 上打印(确定) 此列表作为 JSP 中的可编辑表出现。我想修改然后将其提交回同一操作以将其保存在我的数据库中(失败。当我使用
我有以下形式的 Linq to Entities 查询: var x = from a in SomeData where ... some conditions ... select
我有以下查询。 var query = Repository.Query() .Where(p => !p.IsDeleted && p.Article.ArticleSections.Cou
我正在编写一个应用程序包,其中包含一个主类,其中主方法与GUI类分开,GUI类包含一个带有jtabbedpane的jframe,它有两个选项卡,第一个选项卡包含一个jtable,称为jtable1,第
以下代码产生错误 The nested query is not supported. Operation1='Case' Operation2='Collect' 问题是我做错了什么?我该如何解决?
我已经为 HA redis 集群(2 个副本、1 个主节点、3 个哨兵)设置了本地 docker 环境。只有哨兵暴露端口(10021、10022、10023)。 我使用的是 stackexchange
我正在 Desk.com 中构建一个“集成 URL”,它使用 Shopify Liquid 模板过滤器语法。对于开始日期为 7 天前而结束日期为现在的查询,此 URL 需要包含“开始日期”和“结束日期
你一定想过。然而情况却不理想,python中只能使用类似于 i++/i--等操作。 python中的自增操作 下面代码几乎是所有程序员在python中进行自增(减)操作的常用
我需要在每个使用 github 操作的手动构建中显示分支。例如:https://gyazo.com/2131bf83b0df1e2157480e5be842d4fb 我应该显示分支而不是一个。 最佳答
我有一个关于 Perl qr 运算符的问题: #!/usr/bin/perl -w &mysplit("a:b:c", /:/); sub mysplit { my($str, $patt
我已经使用 ArgoUML 创建了一个 ERD(实体关系图),我希望在一个类中创建两个操作,它们都具有 void 返回类型。但是,我只能创建一个返回 void 类型的操作。 例如: 我能够将 book
Github 操作仍处于测试阶段并且很新,但我希望有人可以提供帮助。我认为可以在主分支和拉取请求上运行 github 操作,如下所示: on: pull_request push: b
我正在尝试创建一个 Twilio 工作流来调用电话并记录用户所说的内容。为此,我正在使用 Record,但我不确定要在 action 参数中放置什么。 尽管我知道 Twilio 会发送有关调用该 UR
我不确定这是否可行,但值得一试。我正在使用模板缓冲区来减少使用此算法的延迟渲染器中光体积的过度绘制(当相机位于体积之外时): 使用廉价的着色器,将深度测试设置为 LEQUAL 绘制背面,将它们标记在模
有没有聪明的方法来复制 和 重命名 文件通过 GitHub 操作? 我想将一些自述文件复制到 /docs文件夹(:= 同一个 repo,不是远程的!),它们将根据它们的 frontmatter 重命名
我有一个 .csv 文件,其中第一列包含用户名。它们采用 FirstName LastName 的形式。我想获取 FirstName 并将 LastName 的第一个字符添加到它上面,然后删除空格。然
Sitecore 根据 Sitecore 树中定义的项目名称生成 URL, http://samplewebsite/Pages/Sample Page 但我们的客户有兴趣降低所有 URL(页面/示例
我正在尝试进行一些计算,但是一旦我输入金额,它就会完成。我只是希望通过单击按钮而不是自动发生这种情况。 到目前为止我做了什么: Angular JS - programming-fr
我的公司创建了一种在环境之间移动文件的复杂方法,现在我们希望将某些构建的 JS 文件(已转换和缩小)从一个 github 存储库移动到另一个。使用 github 操作可以实现这一点吗? 最佳答案 最简
在我的代码中,我创建了一个 JSONArray 对象。并向 JSONArray 对象添加了两个 JSONObject。我使用的是 json-simple-1.1.jar。我的代码是 package j
我是一名优秀的程序员,十分优秀!