+ 13
SOME ERROR DUE TO DECLARATION OF ARRAY TWO TIMES
https://code.sololearn.com/cqQY720P8Um0/?ref=app plzzz give any idea to correct it and to get desired result thanks ☺
12 Answers
+ 10
Tried to write some input error handling for you. Not all cases are caught (see comments), but I hope it will help you to get along ;)
https://code.sololearn.com/camI0d8994k7/?ref=app
+ 12
It wouldn't work for C++ as well ;)
Anyways, you just need some restructuring, like
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int c,d,m=0,n=0;
double mod=0.0;
try{
//taking input (ie, entered matrix mtrx)
m=sc.nextInt(); //no. of rows of matrix
n=sc.nextInt(); //no. of columns of matrix
} catch(Exception e){
errorKiller();
}
double mtrx[][]=new double[m][n];
for(c=0;c<m;c++){
for(d=0;d<n;d++){
mtrx[c][d]=sc.nextDouble();
}
}
And the method errorKiller should exit your program, for you didn't receive valid input with which you could proceed.
If you were not doing that at the playground you would rather put that inside a loop to prompt again for a valid input.
+ 11
//see line 36 and 41
//example :::
int x;
try
{x=2.0;
}
//how to do this with array
int arr [][];
try
{
arr [][]=new int [1][1];
}
//can we do this ...
//i am waiting 😐
+ 11
again a doubt 😅 ,
what if someone entered string as element of matrix ... it will show exceptions ... can't we deal with all the exceptions ... making it fully error free
+ 11
Oh, wait. Forgot to put the 6 lines from double mtrx into the try block ;) But I guess you'll manage that.
+ 11
And put the code after the loop, where the matrix is used to a method an call it from the try block.
(As you might have noticed this is a quick and dirty fix, but it will make it run. Try to refactor it after that)
[Edit] Sry, it's late for me. Maybe you'll have a new version tomorrow, then I'll think about it again ;)
+ 10
thanks
+ 10
You're welcome ^^
+ 10
i hv removed the errorhandlers , code is working ... will try it tomorrow again , gn 4 now
+ 9
i was just wanted to handle all exceptions ... thats the point ... still some exceptions can't be handled ... i will try it again when find some time ... anyways thanks again ☺ @tashi
noob means ??? @babak
+ 7
thnx😊😊 4 the help @tashi N
//i will see it ( busy 4 some days)
/*
Validating user input (matrix) for Gaurav Agrawal.
There's code, too... Scroll down ;)
Input test cases:
4 3
3 4 5
1 2 3
6 7 8
0 0 0
3 4
3 4 5 5
1 2 3 8
6 7 8 4
fail 4
3 4 5 5
1 2 3 8
6 7 8 4
0 4
3 4
3 4 5 5
1 2 3 8
6 7 tadaa! 4
FIX ME! Known issue - inputs like this are uncaught:
3 1
3 4 5 5 5 6 7 0
1 2 3 8
6 7
*/
import java.util.*;
public class Matrix {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = getInput(new Integer(0), sc);
int n = getInput(new Integer(0), sc);
double matrix[][]=new double[m][n];
for (int i = 0; i < m; i++) {
System.out.println();
for (int j = 0; j < n; j++) {
matrix[i][j]=getInput(new Double(0.0), sc);
System.out.print(matrix[i][j] + " ");
}
}
}
private static int getInput(Integer i, Scanner sc) {
try {
i = sc.nextInt();
} catch (NoSuchElementException e) {
System.out.println("Invalid input.\nPlease input int values for the number of rows and columns.");
System.exit(0);
};
if (i==0) {
System.out.println("Zeriously zero? Are you kiddin' me?");
System.exit(0);
}
return i;
}
private static double getInput(Double d, Scanner sc) {
try {
d=sc.nextDouble();
} catch (NoSuchElementException e) {
System.out.println("Invalid input.\nPlease input (all) double values for the matrix.");
System.exit(0);
};
return d;
}
}
+ 1
Those kind of errors occur some times and it's important to fix it as quick as possible in order to keep your code safety. Those errors can be handled right after they are detected. If it's getting too hard for you there are programs that help doing that, such as checkamrx and others that work fine.
Wish you well.