我对编码很陌生。我目前正在使用Deitel的“Java:如何编程”,其中一个早期练习让我感到难过。
它要求我使用简单的第1章if语句来比较5个整数(由用户输入)并显示最大和最小。我仅限于第一章中使用的语言,因此我假设我可以在if语句后面的括号中列出int值。类似的东西:
int firstInt;
int secondInt;
int thirdInt;
int fourthInt;
int fifthInt;
if (first Int> secondIt, thirdInt, fourthInt, fifthInt)
等。但这是一个语法错误。有谁知道如何同时比较多个值?谷歌搜索被证明是没有帮助,因为所有答案都有一些我不理解的复杂解决方案。
如果我尝试这样的话:
if (one > two)
System.out.println("%d is the largest number!", one);
if (one > three)
等。对于所有1 - 5,我遇到的问题是当我继续使用if语句1> 2,3,4,5 2> 1,3,4,5等时,每个整数都会有1个为真,除非是最小的数字,它将显示4个输出,当我所追求的只是大和最小。
我很难过。
答案 0 :(得分:4)
表达式:
firstInt > secondInt, thirdInt, fourthInt, fifthInt
无效,因为Java是一种计算机语言而不是一种自然语言(如英语)。
如果你想这样做,你需要的是and
连接,有多个完整的条件(使用a,b,c,d,e
来最小化代码):
if ((a >= b) && (a >= c) && (a >= d) && (a >= e)) { // a >= b,c,d,e
System.out.println ("Largest is: " + a);
} else if ((b >= c) && (b >= d) && (b >= e)) { // b >= c,d,e
System.out.println ("Largest is: " + b);
} else if ((c >= d) && (c >= e)) { // c >= d,e
System.out.println ("Largest is: " + c);
} else if (d >= e) { // d >= e
System.out.println ("Largest is: " + d);
} else { // e > d
System.out.println ("Largest is: " + e);
}
请记住,一旦您决定a
(或后续步骤中的任何其他内容)不是最大的,您永远不需要再次检查,作为其中之一其他将大于它。
或者您可以使用Java标准Math
包的功能,其中Math.max(a,b)
将为您提供a
和b
中最大的值:
int largest = Math.max(a,Math.max(b,Math.max(c,Math.max(d,e))));
在这里,您将所有五个数字中最大的一个定义为{a, maximum-of-bcde}
对的最大值,然后使用类似的方法计算maximum-of-bcde
作为集合{b, maximum-of-cde}
的最大值上。
或者换句话说,从{d,e}
中选择最大的,并将其命名为x
。然后选择{c,x}
中的最大值,并将其命名为y
。然后是{b,y}
中最大的,并将其称为z
。最后来自{a,z}
的最大值,这是你五个中最大的值。
但是,老实说,如果您是介绍性文本的第一章,那么Java标准库中可能还没有涵盖太多内容。
但是,如果您正在使用一种方法,它可能更容易让初学者理解流程,我认为您不能超越这个:
int maxOfFive (int a, int b, int c, int d, int e) {
int largest = a;
if (b > largest) largest = b;
if (c > largest) largest = c;
if (d > largest) largest = d;
if (e > largest) largest = e;
return largest;
}
这是人们最大值的基本选择,逐个扫描列表,只记住哪个值最高,然后返回。
或者,如果您尚未学习函数(并恢复到原始变量),只需实现相同的代码而无需函数调用:
int largest = firstInt;
if (secondInt > largest) largest = secondInt;
if (thirdInt > largest) largest = thirdInt;
if (fourthInt > largest) largest = fourthInt;
if (fifthInt > largest) largest = fifthInt;
System.out.println ("Largest is: " + largest);
我相信这可能只是使用了你已经表明过你知道的东西(变量,单条件if
语句和输出)。
答案 1 :(得分:1)
使用多个整数来存储数字确实有效但是它不是编码方式。你应该至少使用一个数组。
阵列速成课程:
Array是一组具有相似数据类型的变量。
创建数组:
<datatype>[] arrayName = new <datatype>[size];
//Example
int[] myValues = new int[5]; //create 5 int variables.
myValues[0]; //is similar to your firstInt
myValues[1]; //is similar to your secondInt
myValues[2]; //is similar to your thirdInt
myValues[3]; //is similar to your forthInt
myValues[4]; //is similar to your fifthInt
使用数组,您只需使用for循环来遍历变量。 同时进行(我猜你的意思是迭代),你需要数组。
解决方案1:
//To find the largest
int largest = array[0];
for(int x=0; x<5; x++)
if (array[x] > largest)
largest = array[x];
//To find the smallest
int smallest= array[0];
for(int x=0; x<5; x++)
if (array[x] < smallest)
smallest= array[x];
或者,不使用循环和数组(不是那么优雅,但可能是你想要的):
使用Math.max()
或Math.min()
。
解决方案2:
int largest = Math.max(var1, var2);
largest = Math.max(largest, var3);
largest = Math.max(largest, var4);
largest = Math.max(largest, var5);
解决方案3:
最后,没有使用循环和数组。
int largest = 0;
if(firstInt > secondInt)
largest = firstInt
else
largest = secondInt;
if(thirdInt > largest)
largest = thirdInt;
if(forthInt > largest)
largest = forthInt;
if(fifthInt > largest)
largest = fifthInt;
要查找最小值,只需将运算符从>
更改为<
。
答案 2 :(得分:1)
我建议你知道比较使用数组的整数数量。以下是示例代码 -
这不是真正的答案,因为我没有使用if语句。虽然这是获得你想要的东西的一种方式。因为你是java的新手,想分享我的方法。
import java.util.Arrays;
public class JavaTest {
public static void main(String[] args) {
int values[] = {2,6,10,4,8};
Arrays.sort(values);
System.out.println("Min value : "+values[0]);
System.out.println("Max value : "+values[values.length-1]);
}
}
与java玩得很开心。
答案 3 :(得分:0)
比较多个if语句的唯一方法是使用:
if(integer > 1 && integer > 2 && integer > 3) //etc
否则你可以:
if(integer>1)
if(integer>2) //etc
您不能使用逗号
在if语句中列出多个整数答案 4 :(得分:0)
您可以使用以下方法:
if (one > two && one > three)
System.out.println("%d is the largest number!", one);
或者最好的解决方案,在数组中填充您的值,然后迭代它们,如:
for(int i=1; i<list.length; i++) { //suppose the first element is one
if(one <= list[i]) {
break;
}
System.out.println("%d is the largest number!", one);
}
答案 5 :(得分:0)
我相信你要做的是
if (i1 > i2
&& i1 > i3
&& i1 > i4
&& i1 > i5) {
// i1 is the largest
}
虽然看起来不太优雅。通常我们希望在List
或数组中存储多个整数,并通过对其进行排序或遍历列表来查找最大值。
答案 6 :(得分:0)
创建一个给定5个数字的数组,并尝试:
int numbers[] = new int[]{1,2,3,4,5};
//assign first element of an array to largest and smallest
int smallest = numbers[0];
int largetst = numbers[0];
for(int i=1; i< numbers.length; i++)
{
if(numbers[i] > largetst)
largetst = numbers[i];
else if (numbers[i] < smallest)
smallest = numbers[i];
}
System.out.println("Largest Number is : " + largetst);
System.out.println("Smallest Number is : " + smallest);
答案 7 :(得分:0)
根据您在赋值后使用变量的方式,您还可以创建一个数组并对其进行排序
int firstInt = 4;
int secondInt = 2;
int thirdInt = 3;
int fourthInt = 1;
int fifthInt = 5;
int[] arr = new int[5];
arr[0] = firstInt;
arr[1] = secondInt;
arr[2] = thirdInt;
arr[3] = fourthInt;
arr[4] = fifthInt;
Arrays.sort(arr);
System.out.println("smallest = " + arr[0]);
System.out.println("largest = " + arr[arr.length - 1]);
答案 8 :(得分:0)
我不知道第一章是多么简单,你没有学习的是什么功能主义者,但是简单地定义两个变量并给出它们的最小值和最大值:
int smallest = firstInt;
int largest = secondInt;
if(firstInt > secondInt ){
largest = firstInt;
if(thirdInt > firstInt ){
largest = thirdInt;
if(fourthInt > thirdInt ){
largest = fourthInt;
if(fifthInt > fourthInt){
largest = fifthInt;
}
}
}
}
if(secondInt < firstInt){
smallest= secondInt;
if(thirdInt < secondInt){
smallest = thirdInt;
if(fourthInt < thirdInt ){
smallest = fourthInt;
if(fifthInt < fourthInt){
smallest = fifthInt;
}
}
}
}
System.out.println(smallest);
System.out.println(largest);
答案 9 :(得分:0)
所以我也有同样的问题,但是我能够用这个相当长的算法解决它。我认为它与Java没有任何关系,但我想听听您对此的看法。顺便说一句,这是一种算法,可以从用户的五个给定值中找到最大和最小值。
int [] vector = new int [5];
for (int i=0; i<=4;i++)
{
System.out.print ("enter a number for vector [ "+i+"] :");
vector [i]=input.nextInt();
}
for (int i =0; i<=4;i++)
{
System.out.print ("vector ["+i+"] is : "+vector [i]+"\n");
}
if (vector[0]>vector[1])
{
if (vector[0]>vector[2])
{
if (vector [0]>vector[3])
{
if(vector[0]>vector[4])
{
System.out.print ("the biggest number is : "+vector[0]+"\n");
}
}
}
}
if (vector[1]>vector[0])
{
if (vector[1]>vector[2])
{
if (vector [1]>vector[3])
{
if(vector[1]>vector[4])
{
System.out.print ("the biggest number is : "+vector[1]+"\n");
}
}
}
}
if (vector[2]>vector[0])
{
if (vector[2]>vector[1])
{
if (vector [2]>vector[3])
{
if(vector[2]>vector[4])
{
System.out.print ("the biggest number is : "+vector[2]+"\n");
}
}
}
}
if (vector[3]>vector[0])
{
if (vector[3]>vector[1])
{
if (vector [3]>vector[2])
{
if(vector[3]>vector[4])
{
System.out.print ("the biggest number is : "+vector[3]+"\n");
}
}
}
}
if (vector[4]>vector[0])
{
if (vector[4]>vector[1])
{
if (vector [4]>vector[2])
{
if(vector[4]>vector[3])
{
System.out.print ("the biggest number is : "+vector[4]+"\n");
}
}
}
}
if (vector[0]<vector[1])
{
if (vector[0]<vector[2])
{
if (vector[0]<vector [3])
{
if (vector[0]<vector[4])
{
System.out.print ("the smallest number is : "+vector [0]+"\n");
}
}
}
}
if (vector[1]<vector[0])
{
if (vector[1]<vector[2])
{
if (vector[1]<vector [3])
{
if (vector[1]<vector[4])
{
System.out.print ("the smallest number is : "+vector [1]+"\n");
}
}
}
}
if (vector[2]<vector[0])
{
if (vector[2]<vector[1])
{
if (vector[2]<vector [3])
{
if (vector[2]<vector[4])
{
System.out.print ("the smallest number is : "+vector [2]+"\n");
}
}
}
}
if (vector[3]<vector[0])
{
if (vector[3]<vector[1])
{
if (vector[3]<vector [2])
{
if (vector[3]<vector[4])
{
System.out.print ("the smallest number is : "+vector [3]+"\n");
}
}
}
}
if (vector[4]<vector[0])
{
if (vector[4]<vector[1])
{
if (vector[4]<vector [2])
{
if (vector[4]<vector[3])
{
System.out.print ("the smallest number is : "+vector [4]+"\n");
}
}
}
}