我知道这可能不是最有效的编码方式,但这是我到目前为止所做的工作,直到数字变得非常大.代码应该从文件中读取2个数字,例如"052"和"61".然后,它应该将第一个数字从最大值排序到最小值,以使数字尽可能大,第二个数字从最小到最大,以使其尽可能小.(520和16)然后它打印两者的差异,在这种情况下:504.
其中两个数字是"3827367453723784675745843783623672348745389734268374687"和"1682761482512674172712635416571265716235471625176235741".从最大到最小,最小到最大的数字的排序工作正常,但是当我尝试将其解析为整数时NumberFormatException,抛出a.我想因为数字太大而无法存储到一个int所以我尝试解析成a Long但导致相同的错误.
我所做的是读取数字,String然后创建一个String数组,将每个数字存储在一个单独的索引中.然后我做了一个int数组,我几乎有相同的数组,除了整数形式而不是a String.然后我对int数组进行了排序.然后我创建了另一个String来存储新排序的数字,然后我试图解析那个String,那就是抛出异常的地方.
有什么建议?
import java.io.*;
import java.util.*;
import java.text.*;
import static java.lang.System.*;
public class BigDif
{
public static void main(String[] args) throws IOException
{
Scanner scan = new Scanner (new File ("BigDif.dat"));
int numRuns = scan.nextInt();
scan.nextLine();
for (int i = 0; i < numRuns; i++)
{
String firstNum = scan.nextLine();
String secondNum = scan.nextLine();
String[] firstNum2 = new …Run Code Online (Sandbox Code Playgroud) 我有一个应该像这样的程序.你输入一个班级的学生人数,例如3.然后输入学生ID,然后输入4个数字.前3个成绩平均达到班级成绩的80%,第4个成绩是学生在参加期末考试后希望得到的成绩,即总成绩的20%.
Example:
Enter number of students in class: 3
(Here you would enter the data)
123456 90 90 90 90
543216 70 80 80 70
435366 80 80 80 90
Run Code Online (Sandbox Code Playgroud)
然后输出应该是:
123456 90 //(The minimum score the student must get on their final to get the grade they want)
435366 130
543216 44
Run Code Online (Sandbox Code Playgroud)
我得到了所有的数学,它工作正常.我输入信息,然后我得到正确的数字.我遇到的问题是让输出按照从最小到最大的顺序显示.我使用一个表来输入信息,其中Rows是班级中的学生人数,而列数是5(ID,1级,2级,3级,所需级别)
for (int count = 0; count < numberOfStudents(in this case, 3); ++count)
{
StudentID = The first ID I entered (123456);
Grade = *a bit of …Run Code Online (Sandbox Code Playgroud) 有没有办法倒置开关switch (!(x))?我正在写一个程序,我只希望用户能够输入某些字母.如果他们输入了无效的字母,他们将不得不再次输入.我试图使用一个开关来避免这样做,
因为有效输入的数量远小于无效输入的数量,所以我会有20个案例.
switch(x)
{
case a : case b: case c: case d: etc etc
}
sNums = scanString.nextLine();
String[] num = sNums.split(" ");
for (int i = 0; i < num.length; ++i)
{
numbers = new double[i+1];
numbers[i] = Double.valueOf(num[i]);
}
for(double item: numbers)
out.print(item + " ");
Run Code Online (Sandbox Code Playgroud)
我正在尝试将在这种情况下为“num”的数字字符串更改为双精度数组。我很确定这应该可行,但出于某种原因,它将“0.0”存储到输入的每个元素中,除了最后一个。例如,如果我输入“1 5 7 90 52[enter]”,输出应该是“1.0 5.0 7.0...etc”,但我得到的是“0.0 0.0 0.0 0.0 52.0”
有没有办法选择上一个消息对话框或下一个消息对话框?我有一个程序,在完成所有输入和数学计算后,会出现一个消息对话框,其中包含"人员1"的信息,然后按下确定,出现"人员2"的信息.如果可以选择能够在不同的对话框之间导航,那将是很好的.这是打印消息的程序的一部分.
for (i = 0; i < NumEmployees; i++)
{
JOptionPane.showMessageDialog(null,
"Employee: " + names[i] + "\n" +
"ID: " + data[i][0] + "\n" +
"Hours worked: " + (data[i][1] + data[i][2]) + "\n" +
"Overtime: " + data[i][2] + "hours" + "\n" +
"Amount earned: " + payment[i]);
}
Run Code Online (Sandbox Code Playgroud) 我使用过2D数组,我只是将它们视为表格,我想知道3D数组如何工作以及如何或何时将它实现到程序中?只是好奇.我应该提到我正在使用java.
有没有办法让条件为if语句(x "not"<= 90)?或者是唯一的方法,(x <= 90)在if零件中使用,如果是真的则无所事事,然后执行需要做的任何事情else?我应该提到我在Java中这样做.
java if-statement conditional-operator conditional-statements
switch (x)
{
case A:
case B:
case C:
.doSomething()
}
有没有办法让我在一行中有3个案例?比如这样的事情
case A, B, C:?
private class HandlerClass implements ActionListener
{
public void actionPerfomed(ActionEvent event)
{
JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand));
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码的一部分,当我编译时,我得到一个错误,说HandlerClass不是抽象的,不会覆盖抽象方法actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener.据我所知,actionPerformed应该覆盖HandlerClass不应该吗?我已经尝试abstract在单词class之前添加" "但是我得到了另一个错误,因为我无法调用抽象类.我不确定是否可以用一个例外来解决这个问题?
有人可以向我解释为什么这个代码打印出"abeb"而不是abcb?我理解这是因为你从list1引用list2所以改变list2也改变了list1但是我并不完全理解它.
char [] list1 = {'a','b','c','d'};
char [] list2 = list1;
list2[2] = 'e';
list1[3] = list2[1]
for (char a: list1)
out.print(a)`
Run Code Online (Sandbox Code Playgroud)
为什么在此代码中没有应用相同的逻辑(我理解的逻辑)?它打印出x作为"5"是从我从上面的代码中理解它应该是7?
int x = 5;
int y = x;
y += 2;
out.print(x);
Run Code Online (Sandbox Code Playgroud) public class Recursive_Prob
{
public static void main(String[] args)
{
out.print("\f");
out.print(m(4));
}
public static int m(int a)
{
if (a < 0)
return 0;
else
return m(a-2) + n(a-1);
}
public static int n(int b)
{
if (b <= 0)
return 0;
else
return 1 + n(b-1);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个问题,询问m在调用方法时输出是什么out.print(m(4));我尝试解决它并且出来了,0但答案是4在我运行代码时.我最终得到了m(a-2)存在0而且那部分是正确的,但使用相同的逻辑,n(a-1)也是0如此清楚我做错了什么.有人可以解释这是如何工作的?