java,求大神帮忙运行一下看看哪里错啦

importjava.util.Scanner;classmain{publicstaticvoidmain(String[]args){Scannerinput=new... import java.util.Scanner;
class main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int i;
for(i=0;i<n;i++){
Num num = new Num(input.next());
System.out.println(num.showresult()+" "+num.res());
}
}
}
class Num {
String a;

Num(String _a) {
a = _a;
}

char showresult() {
char[] c = a.toCharArray();
char m = c[0];
int i, j, max = 1, k;
for (j = 0; j < c.length; j++) {
k = 1;
for (i = j + 1; j < c.length; i++) {
if (c[j] == c[i])
k++;
}
if (k > max || (k == max && c[j] < m)) {
max = k;
m = c[j];
}
}
return m;
}

int res() {
char[] c = a.toCharArray();
char m = c[0];
int i, j, max = 1, k;
for (j = 0; j < c.length; j++) {
k = 1;
for (i = j + 1; j < c.length; i++) {
if (c[j] == c[i])
k++;
}
if (k > max || (k == max && c[j] < m)) {
max = k;
m = c[j];
}
}
return max;
}
}
展开
 我来答
匿名用户
2017-03-18
展开全部

首先 这里有个问题,在图中第47行,当数组c的长度大于0,在第48行代码不报错的情况下,这里会进入死循环

因为j=0 进入循环并一直没变化,j永远小于c.length,所以进入死循环

你没有对循环变量进行处理,实际上应该是 i<c.length ,

因为你是用数组的第j个数与其他值对比,i自增达到遍历的作用


这里也是(图中第30行)

另外,在一个类里面没有public的类是可以成功编译的。

但是,如果说public的类名跟文件名不一致,这一定会报错;


做了一些小改动(只是输出提示)

import java.util.Scanner;

class main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("输入次数:");
int n = input.nextInt();
int i;
for (i = 0; i < n; i++) {
System.out.print("请输入第" + (i + 1) + "个数:");
Num num = new Num(input.next());
System.out.println("出现次数最多的:" + num.showresult() + "  出现了"
+ num.res() + "次");
}
}
}

class Num {
String a;

Num(String _a) {
a = _a;
}

char showresult() {
char[] c = a.toCharArray();
char m = c[0];
int i, j, max = 1, k;
for (j = 0; j < c.length; j++) {
k = 1;
for (i = j + 1; i < c.length; i++) {
if (c[j] == c[i])
k++;
}
if (k > max || (k == max && c[j] < m)) {
max = k;
m = c[j];
}
}
return m;
}

int res() {
char[] c = a.toCharArray();
char m = c[0];
int i, j, max = 1, k;
for (j = 0; j < c.length; j++) {
k = 1;
for (i = j + 1; i < c.length; i++) {
if (c[j] == c[i])
k++;
}
if (k > max || (k == max && c[j] < m)) {
max = k;
m = c[j];
}
}
return max;
}
}
文档100科
2017-03-18 · TA获得超过464个赞
知道小有建树答主
回答量:642
采纳率:50%
帮助的人:232万
展开全部
import java.util.Scanner;

public class main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int i;
for(i=0;i<n;i++){
Num num = new Num(input.next());
System.out.println(num.showresult()+" "+num.res());
}
}
}
class Num {
String a;

Num(String _a) {
a = _a;
}

char showresult() {
char[] c = a.toCharArray();
char m = c[0];
int i, j, max = 1, k;
for (j = 0; j < c.length; j++) {
k = 1;
for (i = j + 1; j < c.length; i++) {
if (c[j] == c[i])
k++;
}
if (k > max || (k == max && c[j] < m)) {
max = k;
m = c[j];
}
}
return m;
}

int res() {
char[] c = a.toCharArray();
char m = c[0];
int i, j, max = 1, k;
for (j = 0; j < c.length; j++) {
k = 1;
for (i = j + 1; j < c.length; i++) {
if (c[j] == c[i])
k++;
}
if (k > max || (k == max && c[j] < m)) {
max = k;
m = c[j];
}
}
return max;
}
}

改为这样,另外你的类名要与public class xx这个类名字对应一致

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
命运里的路人
2017-03-18 · TA获得超过441个赞
知道小有建树答主
回答量:269
采纳率:66%
帮助的人:34万
展开全部
楼下的厉害

但是第三行的m要大写

然后在第三行后面加一行
@SuppressWarnings("resource")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式