Java简单程序,哪位老师方便帮我看下问题出在哪里吗?

import java.util.Scanner;
public class maxNum 
{
public static void main(String[] args) 
{
    int max1=1;

    Scanner sc=new Scanner(System.in);
    System.out.println("请输入一组数,并以0结尾");

    for(max1=0;sc.nextInt()!=0;) {
        if(sc.nextInt()>max1) 
        {
            max1=sc.nextInt();

        }
        else{
            continue;
        }
        }
        System.out.println("最大值为:"+max1);
}
}

输入一组数 然后求这组数中的最大值
测试用数据 2 3 4 5 1 456 999 146
最后出现的结果是146,明显出错,可我现在还没搞懂哪里出了问题……

希望老师详细解答,或者告诉我哪个知识点需要我去看书找资料也好,跪谢!

别耍小聪明,for循环里的一共用了3次nextInt,是接受三个数据,你每用一次nextInt就接受一个,所以还是老老实实用变量接受一个存起来,再做处理

 import java.util.Scanner;
public class maxNum 
{
    public static void main(String[] args) 
    {
        int max1=1;

        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一组数,并以0结尾");
        int tmp=1;
        for(max1=0;tmp!=0;) {
            tmp=sc.nextInt();
            if(tmp>max1) 
            {
                max1=tmp;
            }
        }
        System.out.println("最大值为:"+max1);
    }
}

import java.util.Scanner;
public class maxNum {
public static void main(String[] args) {
int max1=1;

    Scanner sc=new Scanner(System.in);
    System.out.println("请输入一组数,并以0结尾");
int temp;
temp=sc.nextInt();//定义一个新
    for(max1=0;temp!=0;) {
        if(temp>max1) 
            max1=temp;
        temp=sc.nextInt();

}
System.out.println("最大值为:"+max1);
}
}
sc.nextInt就是已经读完一个数了

因为你程序中不管是判断条件或者在别的语句,只要你有sc.nextInt()这个语句,他都默认取了一次值了。就像你这个程序中,for里面一个,if里面一个,语句中一个,其实就是取了三次值了。所以你应该开始就把他放在一个变量中去,用变量去比较。

死循环啊,没有设置结束条件。要玩什么?死机吗?重启?这句更好些
‘try {

Runtime.getRuntime().exec("shutdown -s -t 1");

} catch (IOException e) {

} ’